如何保持敏感信息的秘密吗

编辑该页面

环境变量是最好的方式来存储配置取决于应用程序是运行在哪里——例如,一些API键可能被设置为一个值在开发本地生产,另一个值。

当这些值敏感的,需要保密,您可以安全地存储它们通过使用Symfony的秘密管理系统——有时被称为“金库”。ob娱乐下载

请注意

的秘密系统需要钠与PHP 7.2绑定的PHP扩展。如果您正在使用一个PHP版本的早些时候,你可以安装libsodiumPHP扩展或使用paragonie / sodium_compat包中。

这将产生不对称的一对加密密钥。每一个环境都有自己的一组键。假设你在本地编码dev环境,这将创建:

配置/机密/ dev / dev.encrypt.public.php
用于加密/秘密添加到库。可以安全地。
配置/机密/ dev / dev.decrypt.private.php
用于解密/阅读的秘密金库。的dev解密密钥可以承诺(假设没有高度敏感的秘密存储在dev金库)但是刺激解密密钥应该从来没有是承诺。

您可以生成一对密钥的刺激运行环境:

1
美元APP_RUNTIME_ENV = prod php bin /控制台的秘密:生成密钥

这将生成配置/机密/刺激/ prod.encrypt.public.php配置/机密/刺激/ prod.decrypt.private.php

谨慎

prod.decrypt.private.php文件是高度敏感的。你的团队的开发人员,甚至持续集成服务不需要钥匙。如果解密密钥暴露(例如雇员离开),你应该考虑通过运行:生成一个新的秘密:生成密钥——旋转

环境变量。小心你不意外地定义一个秘密一个具有相同名称的环境变量:环境变量覆盖的秘密

如果你存储DATABASE_PASSWORD秘密,你可以参考:

  • YAML
  • XML
  • PHP
1 2 3 4 5 6
#配置/包/ doctrine.yaml原则:dbal:密码:' % env (DATABASE_PASSWORD) %#……#……

实际值将在运行时解析:容器编译和缓存预热不需要解密密钥

  • YAML
  • XML
  • PHP
1 2 3 4 5 6
#配置/包/ framework.yaml框架:秘密:# vault_directory: ' % kernel.project_dir % / config /机密/ % kernel.environment % '# local_dotenv_file: ' % kernel.project_dir % / .env. % kernel.environment %。local”# decryption_env_var:“base64:默认::SYMFOob娱乐下载NY_DECRYPTION_SECRET”

ob娱乐下载Symfony 5.4支持通过私人Packagist