密钥管理是应用程序安全的关键部分,应认真对待。

本地密钥定义在 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