本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon Secrets Manager 旋转函数模板
Secrets Manager 为以下各项提供轮换函数模板:
若要使用模板,请参阅:
这些模板支持 Python 3.9。
要编写自己的旋转函数,请参阅编写旋转函数。
Amazon RDS 和 Amazon Aurora
主题
- Amazon RDS Db2 单用户
- Amazon RDS Db2 交替用户
- Amazon RDS MariaDB 单用户
- Amazon RDS MariaDB 交替用户
- Amazon RDS 和 Amazon Aurora MySQL 单用户
- Amazon RDS 和 Amazon Aurora MySQL 交替用户
- Amazon RDS Oracle 单用户
- Amazon RDS Oracle 交替用户
- Amazon RDS 和 Amazon Aurora PostgreSQL 单用户
- Amazon RDS 和 Amazon Aurora PostgreSQL 交替用户
- Amazon RDS Microsoft SQLServer 单用户
- Amazon RDS Microsoft SQLServer 交替用户
Amazon RDS Db2 单用户
-
模板名称: SecretsManagerrdsDb2 RotationSingleUser
-
轮换策略: 轮换策略:单用户。
-
SecretString
结构:Amazon RDS Db2 秘密结构。 -
依赖关系:python-ibmdb
Amazon RDS Db2 交替用户
-
模板名称: SecretsManagerrdsDb2 RotationMultiUser
-
轮换策略: 轮换策略:交替用户。
-
SecretString
结构:Amazon RDS Db2 秘密结构。 -
依赖关系:python-ibmdb
Amazon RDS MariaDB 单用户
-
模板名称: SecretsManagerrdsmariaDB RotationSingleUser
-
轮换策略: 轮换策略:单用户。
-
SecretString
结构:Amazon RDS MariaDB 密钥结构。 -
依赖关系:PyMySQL 1.0.2
Amazon RDS MariaDB 交替用户
-
模板名称: SecretsManagerrdsmariaDB RotationMultiUser
-
轮换策略: 轮换策略:交替用户。
-
SecretString
结构:Amazon RDS MariaDB 密钥结构。 -
依赖关系:PyMySQL 1.0.2
Amazon RDS 和 Amazon Aurora MySQL 单用户
-
模板名称: SecretsManagerrdsmySQL RotationSingleUser
-
轮换策略: 轮换策略:单用户。
-
预期的
SecretString
结构:Amazon RDS 和 Amazon Aurora MySQL 秘密结构。 -
源代码:https://github.com/aws-samples/ aws-secrets-manager-rotation-lambdas/tree/master/ rdsmyS SecretsManager
QL /lambda_function.py RotationSingleUser -
依赖关系:PyMySQL 1.0.2
Amazon RDS 和 Amazon Aurora MySQL 交替用户
-
模板名称: SecretsManagerrdsmySQL RotationMultiUser
-
轮换策略: 轮换策略:交替用户。
-
预期的
SecretString
结构:Amazon RDS 和 Amazon Aurora MySQL 秘密结构。 -
源代码:https://github.com/aws-samples/ aws-secrets-manager-rotation-lambdas/tree/master/ rdsmyS SecretsManager
QL /lambda_function.py RotationMultiUser -
依赖关系:PyMySQL 1.0.2
Amazon RDS Oracle 单用户
-
模板名称: SecretsManagerRDS OracleRotationSingleUser
-
轮换策略: 轮换策略:单用户。
-
预期的
SecretString
结构:Amazon RDS Oracle 密钥结构。 -
依赖关系:python-or acledb 2.0.1
Amazon RDS Oracle 交替用户
-
模板名称: SecretsManagerRDS OracleRotationMultiUser
-
轮换策略: 轮换策略:交替用户。
-
预期的
SecretString
结构:Amazon RDS Oracle 密钥结构。 -
依赖关系:python-or acledb 2.0.1
Amazon RDS 和 Amazon Aurora PostgreSQL 单用户
-
模板名称: SecretsManagerrdpostgreSQL RotationSingleUser
-
轮换策略: 轮换策略:单用户。
-
预期的
SecretString
结构:Amazon RDS 和 Amazon Aurora PostgreSQL 秘密结构。 -
源代码:https://github.com/aws-samples/ aws-secrets-manager-rotation-lambdas/tree/master/ rd SecretsManager
spostgreSQL /lambda_function.py RotationSingleUser -
依赖关系:PyGreSQL 5.0.7
Amazon RDS 和 Amazon Aurora PostgreSQL 交替用户
-
模板名称: SecretsManagerrdpostgreSQL RotationMultiUser
-
轮换策略: 轮换策略:交替用户。
-
预期的
SecretString
结构:Amazon RDS 和 Amazon Aurora PostgreSQL 秘密结构。 -
源代码:https://github.com/aws-samples/ aws-secrets-manager-rotation-lambdas/tree/master/ rd SecretsManager
spostgreSQL /lambda_function.py RotationMultiUser -
依赖关系:PyGreSQL 5.0.7
Amazon RDS Microsoft SQLServer 单用户
-
模板名称: SecretsManagerRDSSQ L ServerRotationSingleUser
-
轮换策略: 轮换策略:单用户。
-
预期的
SecretString
结构:Amazon RDS Microsoft SQLServer 密钥结构。 -
依赖关系:Pymssql 2.2.2
Amazon RDS Microsoft SQLServer 交替用户
-
模板名称: SecretsManagerRDSSQ L ServerRotationMultiUser
-
轮换策略: 轮换策略:交替用户。
-
预期的
SecretString
结构:Amazon RDS Microsoft SQLServer 密钥结构。 -
依赖关系:Pymssql 2.2.2
Amazon DocumentDB(与 MongoDB 兼容)
Amazon DocumentDB 单个用户
-
模板名称: SecretsManagerMongoDB RotationSingleUser
-
轮换策略: 轮换策略:单用户。
-
预期的
SecretString
结构:Amazon DocumentDB 密钥结构。 -
依赖关系:Pymongo 3.2
Amazon DocumentDB 交替用户
-
模板名称: SecretsManagerMongoDB RotationMultiUser
-
轮换策略: 轮换策略:交替用户。
-
预期的
SecretString
结构:Amazon DocumentDB 密钥结构。 -
依赖关系:Pymongo 3.2
Amazon Redshift
Amazon Redshift 单用户
-
模板名称: SecretsManagerRedshiftRotationSingleUser
-
轮换策略: 轮换策略:单用户。
-
预期
SecretString
结构:Amazon Redshift 密钥结构或亚马逊 Redshift 无服务器秘密结构。 -
源代码:https://github.com/aws-samples/ aws-secrets-manager-rotation-lam SecretsManagerRedshiftRotationSingleUser
bdas/tree/master/ /lambda_function.py -
依赖关系:PyGreSQL 5.0.7
Amazon Redshift 交替用户
-
模板名称: SecretsManagerRedshiftRotationMultiUser
-
轮换策略: 轮换策略:交替用户。
-
预期
SecretString
结构:Amazon Redshift 密钥结构或亚马逊 Redshift 无服务器秘密结构。 -
源代码:https://github.com/aws-samples/ aws-secrets-manager-rotation-lam SecretsManagerRedshiftRotationMultiUser
bdas/tree/master/ /lambda_function.py -
依赖关系:PyGreSQL 5.0.7
Amazon ElastiCache
要使用此模板,请参阅 Amazon 用户指南中的自动轮换 ElastiCache 用户密码。
-
模板名称: SecretsManagerElasticacheUserRotation
-
预期的
SecretString
结构:亚马逊的 ElastiCache 秘密结构。 -
源代码:https://github.com/aws-samples/ aws-secrets-manager-rotation-lam SecretsManagerElasticacheUserRotation
bdas/tree/master/ /lambda_function.py
其他密钥类型
Secrets Manager 提供此模板作为您为任何类型密钥创建轮换函数的起点。
-
模板名称: SecretsManagerRotationTemplate
-
源代码:https://github.com/aws-samples/ aws-secrets-manager-rotation-lam SecretsManagerRotationTemplate
bdas/tree/master/ /lambda_function.py
编写函数时,请谨慎包括调试或日志记录语句。这些语句可能会导致您的函数中的信息被写入 Amazon CloudWatch,因此您需要确保日志中不包含开发过程中收集的任何敏感信息。
出于安全考虑,Secrets Manager 仅允许 Lambda 轮换函数直接轮换密钥。轮换函数无法调用第二个 Lambda 函数来轮换密钥。
有关日志语句的示例,请参阅 Amazon Secrets Manager 旋转函数模板 源代码。
例如,如果您使用外部二进制文件和库来连接资源,则需要管理修补和保留它们。 up-to-date
有关调试建议,请参阅测试和调试无服务器应用程序。
轮换密钥包含四个步骤,分别对应 Lambda 轮换函数的以下四种方法。
create_secret
在 create_secret
中,请首先通过传入的 ClientRequestToken
调用 get_secret_value
create_secret
VersionId
。然后您可以使用 get_random_password
ExcludeCharacters
参数排除字符。调用 put_secret_value
一起存储。将新的密钥值存储在 AWSPENDING
中有助于确保幂等性。如果由于任何原因轮换失败,您可以在后续调用中引用该密钥值。请参阅如何使我的 Lambda 函数具有幂等性AWSPENDING
在测试函数时,使用查看版本阶段:调用describe-secret
并查看VersionIdsToStages
。 Amazon CLI
set_secret
在 set_secret
中,更改数据库或服务中的凭证,以匹配密钥 AWSPENDING
版本中的新密钥值。
如果将语句传递给数据库等语句解读服务,请使用查询参数化。有关更多信息,请参阅 OWASP 网站上的查询参数化备忘单
轮换函数作为特权代理,有权访问和修改 Secrets Manager 密钥和目标资源中的客户凭证。为防范潜在的混淆代理攻击,您需要确保攻击者无法使用该函数访问其他资源。在更新凭证之前:
检查密钥
AWSCURRENT
版本中的凭证是否有效。如果AWSCURRENT
凭证无效,请放弃轮换尝试。检查
AWSCURRENT
和AWSPENDING
密钥值是否适用于同一资源。对于用户名和密码,检查AWSCURRENT
和AWSPENDING
用户名是否相同。检查目标服务资源是否相同。对于数据库,检查
AWSCURRENT
和AWSPENDING
主机名是否相同。
test_secret
在 test_secret
中,通过使用密钥的 AWSPENDING
版本访问数据库或服务,以对其进行测试。
finish_secret
在 finish_secret
中,使用 update_secret_version_stage
AWSCURRENT
从早期密钥版本移动到新的密钥版本。Secrets Manager 会将 AWSPREVIOUS
暂存标签自动添加到早期版本,以便您保留上次已知良好的密钥版本。