密钥管理是应用程序安全的关键部分,应认真对待。 本地密钥定义在 worspace/secrets 目录中,该目录已从版本控制中排除(参见 .gitignore)。其内容应与密码的安全级别同等对待。 生产环境密钥由 AWS Secrets Manager 管理。
如果您缺少 secrets 目录,请复制 workspace/example_secrets

开发密钥

本地运行的应用程序可以通过 yaml 文件读取密钥,例如:
dev_resources.py
dev_fastapi = FastApi(
    ...
    # 从 secrets/dev_app_secrets.yml 读取密钥
    secrets_file=ws_settings.ws_root.joinpath("workspace/secrets/dev_app_secrets.yml"),
)

生产密钥

AWS Secrets 用于管理生产环境密钥,这些密钥由生产环境应用程序读取。
prd_resources.py
# -*- 生产环境应用程序的密钥
prd_secret = SecretsManager(
    ...
    # 从 workspace/secrets/prd_app_secrets.yml 创建密钥
    secret_files=[
        ws_settings.ws_root.joinpath("workspace/secrets/prd_app_secrets.yml")
    ],
)

# -*- 生产环境数据库的密钥
prd_db_secret = SecretsManager(
    ...
    # 从 workspace/secrets/prd_db_secrets.yml 创建密钥
    secret_files=[ws_settings.ws_root.joinpath("workspace/secrets/prd_db_secrets.yml")],
)
在生产环境应用程序中使用以下方式读取密钥:
prd_fastapi = FastApi(
    ...
    aws_secrets=[prd_secret],
    ...
)
生产环境资源也可以通过 yaml 文件读取密钥,但我们强烈建议使用 AWS Secrets