本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWS 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 單用戶
-
樣板名稱:數據 SecretsManager庫 RotationSingleUser
-
輪換策略:輪換策略:單一使用者。
-
SecretString
結構:Amazon RDS Db2 秘密結構。 -
源代碼:https://github.com/aws-samples/ aws-secrets-manager-rotation-羊肉/樹/主/RDSDB2 SecretsManager RotationSingleUser
/lambda_function.py -
依賴關係:python-ibmdb
Amazon RDS Db2 交替用戶
-
樣板名稱:數據 SecretsManager庫 RotationMultiUser
-
輪換策略:輪換策略:交替使用者。
-
SecretString
結構:Amazon RDS Db2 秘密結構。 -
源代碼:https://github.com/aws-samples/ aws-secrets-manager-rotation-羊肉/樹/主/RDSDB2 SecretsManager RotationMultiUser
/lambda_function.py -
依賴關係:python-ibmdb
Amazon RDS MariaDB 單一使用者
-
樣板名稱: SecretsManagerRDS B RotationSingleUser
-
輪換策略:輪換策略:單一使用者。
-
SecretString
結構:Amazon RDS MariaDB 機密結構。 -
源代碼:https://github.com/aws-samples/ aws-secrets-manager-rotation-羊肉/樹/主/RDSB SecretsManager RotationSingleUser
/lambda_function.py -
依賴關PyMy係:
Amazon RDS MariaDB 交替使用者
-
樣板名稱: SecretsManagerRDS B RotationMultiUser
-
輪換策略:輪換策略:交替使用者。
-
SecretString
結構:Amazon RDS MariaDB 機密結構。 -
源代碼:https://github.com/aws-samples/ aws-secrets-manager-rotation-羊肉/樹/主/RDSB SecretsManager RotationMultiUser
/lambda_function.py -
依賴關PyMy係:
Amazon RDS 和 Amazon Aurora MySQL 單一使用者
-
樣板名稱: SecretsManager模板 RotationSingleUser
-
輪換策略:輪換策略:單一使用者。
-
預期的
SecretString
結構:Amazon RDS 和 Amazon Aurora MySQL 的秘密結構。 -
源代碼:https://github.com/aws-samples/ aws-secrets-manager-rotation-羊肉/樹/主/RDSYSQL SecretsManager RotationSingleUser
/lambda_function.py -
依賴關PyMy係:
Amazon RDS 和 Amazon Aurora MySQL 交替使用者
-
樣板名稱: SecretsManager模板 RotationMultiUser
-
輪換策略:輪換策略:交替使用者。
-
預期的
SecretString
結構:Amazon RDS 和 Amazon Aurora MySQL 的秘密結構。 -
源代碼:https://github.com/aws-samples/ aws-secrets-manager-rotation-羊肉/樹/主/RDSYSQL SecretsManager RotationMultiUser
/lambda_function.py -
依賴關PyMy係:
Amazon RDS Oracle 單一使用者
-
樣板名稱 SecretsManager:OracleRotationSingleUser
-
輪換策略:輪換策略:單一使用者。
-
預期的
SecretString
結構:Amazon RDS Oracle 機密結構。 -
源代碼:https://github.com/aws-samples/ aws-secrets-manager-rotation-羊肉/樹/主/RDS SecretsManager OracleRotationSingleUser
/lambda_function.py -
依賴:蟒蛇座
管理數據 2.0.1
Amazon RDS Oracle 交替使用者
-
樣板名稱 SecretsManager:OracleRotationMultiUser
-
輪換策略:輪換策略:交替使用者。
-
預期的
SecretString
結構:Amazon RDS Oracle 機密結構。 -
源代碼:https://github.com/aws-samples/ aws-secrets-manager-rotation-羊肉/樹/主/RDS SecretsManager OracleRotationMultiUser
/lambda_function.py -
依賴:蟒蛇座
管理數據 2.0.1
Amazon RDS 和 Amazon Aurora PostgreSQL 單一使用者
-
樣板名稱: SecretsManager格雷斯 RotationSingleUser
-
輪換策略:輪換策略:單一使用者。
-
預期的
SecretString
結構:Amazon RDS 和 Amazon Aurora PostgreSQL 的秘密結構。 -
源代碼:https://github.com/aws-samples/ aws-secrets-manager-rotation-羊肉/樹/主/RDSPLCSQL SecretsManager RotationSingleUser
/lambda_function.py -
相依PyGre性:
Amazon RDS 和 Amazon Aurora PostgreSQL 交替使用者
-
樣板名稱: SecretsManager格雷斯 RotationMultiUser
-
輪換策略:輪換策略:交替使用者。
-
預期的
SecretString
結構:Amazon RDS 和 Amazon Aurora PostgreSQL 的秘密結構。 -
源代碼:https://github.com/aws-samples/ aws-secrets-manager-rotation-羊肉/樹/主/RDSPLCSQL SecretsManager RotationMultiUser
/lambda_function.py -
相依PyGre性:
Amazon RDS Microsoft SQLServer 單一使用者
-
樣板名稱: SecretsManager資料庫 ServerRotationSingleUser
-
輪換策略:輪換策略:單一使用者。
-
預期的
SecretString
結構:Amazon RDS Microsoft SQLServer 機密結構。 -
源代碼:https://github.com/aws-samples/ aws-secrets-manager-rotation-羊肉/樹/主/RDSSQL SecretsManager ServerRotationSingleUser
/lambda_function.py -
相依性:Pymssql 2.2.2
Amazon RDS Microsoft SQLServer 交替使用者
-
樣板名稱: SecretsManager資料庫 ServerRotationMultiUser
-
輪換策略:輪換策略:交替使用者。
-
預期的
SecretString
結構:Amazon RDS Microsoft SQLServer 機密結構。 -
源代碼:https://github.com/aws-samples/ aws-secrets-manager-rotation-羊肉/樹/主/RDSSQL SecretsManager ServerRotationMultiUser
/lambda_function.py -
相依性:Pymssql 2.2.2
Amazon DocumentDB (with MongoDB compatibility)
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 機密結構或Amazon Redshift 無服務器秘密結構。 -
相依PyGre性:
Amazon Redshift 交替使用者
-
範本名稱: SecretsManagerRedshiftRotationMultiUser
-
輪換策略:輪換策略:交替使用者。
-
預期的
SecretString
結構:Amazon Redshift 機密結構或Amazon Redshift 無服務器秘密結構。 -
相依PyGre性:
Amazon ElastiCache
若要使用此範本,請參閱 Amazon 使用 ElastiCache 者指南中的自動輪替使用者密碼。
-
範本名稱: SecretsManagerElasticacheUserRotation
-
預期的
SecretString
結構:Amazon ElastiCache 秘密結構。
其他類型的秘密
Secrets Manager 提供此範本做為起點,供您為任何類型的秘密建立輪換函數。
-
範本名稱: SecretsManagerRotationTemplate
撰寫函數時,請謹慎納入偵錯或記錄陳述式。這些陳述式可能會導致函數中的資訊寫入 Amazon CloudWatch,因此您需要確保記錄檔不包含在開發期間收集的任何敏感資訊。
為了安全起見,Secrets Manager 僅允許 Lambda 輪換函數直接輪換機密。輪換函數無法呼叫第二個 Lambda 函數來輪換機密。
如需日誌陳述式的範例,請參閱AWS Secrets Manager 旋轉函數模板原始程式碼。
如果您使用外部二進位檔案和程式庫 (例如連線至資源),則需要管理修補並保留它們 up-to-date。
如需偵錯建議,請參閱 Testing and debugging serverless applications (測試與偵錯無伺服器應用程式)。
輪換秘密有四個步驟,分別對應 Lambda 輪換函數的下列四個方法。
create_secret
在 create_secret
中,您會先使用傳入的 ClientRequestToken
呼叫 get_secret_value
create_secret
VersionId
。您便可使用 get_random_password
ExcludeCharacters
參數排除字元。呼叫 put_secret_value
一起儲存。將新的秘密值儲存在 AWSPENDING
中,有助於確保等冪性。如果輪換因任何原因而失敗,您可以在後續呼叫中參考該秘密值。請參閱 How do I make my Lambda function idempotentAWSPENDING
在測試函數時,請使用 AWS CLI 查看版本階段:調用describe-secret
並查看VersionIdsToStages
。
set_secret
在 set_secret
中,您會變更資料庫或服務中的憑證,以符合 AWSPENDING
版本秘密中的新秘密值。
如果您將陳述式傳遞至解譯陳述式的服務 (例如資料庫),請使用查詢參數化。如需詳細資訊,請參閱 OWASP 網站上的 Query Parameterization Cheat Sheet
輪換函數是具有特殊權限的代理人,有權存取和修改 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
預備標籤新增至先前版本,以便您保留上一個已知良好的秘密版本。