跳至內容

如何使用 Secrets Manager 密碼為不受支援的資料庫建立輪換函數?

2 分的閱讀內容
0

我想為 AWS Secrets Manager 密碼建立 AWS Lambda 函式。我的資料庫或服務不支援自動輪換功能。

解決方法

先決條件:安裝設定 AWS Command Line Interface (AWS CLI)。

**注意:**如果您在執行 AWS CLI 命令時收到錯誤,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本

為 Lambda 輪換函式建立程式碼

如需指示,請參閱設定非資料庫 AWS Secrets Manager 密碼的自動輪換

根據一般輪換函式範本建立 AWS CloudFormation 變更集

  1. 執行 create-cloud-formation-change-set AWS CLI 命令。
  2. --stack-name 替換為 CloudFormation 堆疊的名稱。
  3. --parameter-overrides 替換為您 AWS 區域的 Secrets Manager 區域端點,以及範本所建立 Lambda 輪換函式的名稱。

create-cloud-formation-change-set AWS CLI 命令的範例:

aws serverlessrepo create-cloud-formation-change-set --application-id arn:aws:serverlessrepo:us-east-1:297356227824:applications/SecretsManagerRotationTemplate --stack-name MyLambdaCreationStack --parameter-overrides Name=endpoint,Value=https://secretsmanager.REGION.amazonaws.com Name=functionName,Value=MySecretsManagerRotationFunction --capabilities CAPABILITY_IAM CAPABILITY_RESOURCE_POLICY

**注意:**請務必完全按照所示使用 arn:aws:serverlessrepo:us-east-1:297356227824:applications/SecretsManagerRotationTemplate 的 ARN。

使用 CloudFormation 變更集來更新堆疊

create-cloud-formation-change-set 命令會傳回 ApplicationIdChangeSetIdSemanticVersionStackId 值。

請完成下列步驟:

  1. 執行 execute-change-set 命令時,將 change-set-name 替換為 ChangeSetId 值。
  2. 執行 execute-change-set AWS CLI 命令:
    aws cloudformation execute-change-set --change-set-name arn:aws:cloudformation:region:123456789012:changeSet/EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE/EXAMPLE2-90ab-cdef-fedc-ba987EXAMPLE

CloudFormation 堆疊會建立 Lambda 函式和 AWS Identity and Access Management (IAM) 角色。IAM 角色具有 Lambda 函式所需的權限

確認建立 Lambda 函式

執行 list-functions AWS CLI 命令:

aws lambda list-functions

Output
{
    ...
    "FunctionName": "MySecretsManagerRotationFunction",
    ...
    "FunctionArn": "arn:aws:lambda:region:123456789012:function:MySecretsManagerRotationFunction",
    ...
}

**注意:**FunctionName 值與您在 --parameter-overrides 選項中指定的函數名稱相符。

設定 Lambda 函式對 Amazon Virtual Private Cloud 的存取

如果您的資料庫或服務位於 Amazon Virtual Private Cloud (Amazon VPC) 中,請執行 update-function-configuration 命令,將 Lambda 輪換函式設定為在 Amazon VPC 中執行。請務必提供 VPC 子網路 ID 和安全群組 ID。如需詳細資訊,請參閱授予 Lambda 函式存取 Amazon VPC 中資源的權限

**注意:**如果您的資料庫或服務不在 Amazon VPC 中,請略過此步驟。

update-function-configuration AWS CLI 命令的範例:

$ aws lambda update-function-configuration --function-name your-lambda-function \
--vpc-config SubnetIds=subnet-076c28105d486f3bd,subnet-0af00c796ccdc725f,SecurityGroupIds=sg-0aed64f81acc4c037

為 Secrets Manager 建立 Amazon VPC 端點

如果具有資料庫或服務和 Lambda 輪換函式的 Amazon VPC 無法存取網際網路,請建立 Amazon VPC 端點。在您的 Amazon VPC 中設定私有服務端點以存取 Secret Manager,並在 VPC 內的端點開啟輪換函式。執行 create-vpc-endpoint AWS CLI 命令。

**注意:**如果您的資料庫或服務不在 Amazon VPC 中,請略過此步驟。

$ aws ec2 create-vpc-endpoint --vpc-id  vpc-0abb11f5a28a8abe7 --vpc-endpoint-type Interface \
--service-name com.amazonaws.your-region.secretsmanager  --subnet-ids subnet-076c28105d486f3bd subnet-0af00c796ccdc725f \
--security-group-ids sg-0bacf4bbed67e4df5

設定 Lambda 函式與資料庫或服務之間的網路連線

請確認 Lambda 函式可以透過所需的網路連接埠路由至您的資料庫或服務。連接埠和路由需求會根據資料庫或服務以及其相關 VPC 組態而有所不同。

**注意:**如果您的資料庫或服務不在 Amazon VPC 中,請略過此步驟。

為您的使用案例自訂輪換函式

輪換範本會為您實作 createSecretfinishSecret 步驟。您必須修改 Lambda 函式,才能為您的使用案例和資料庫實現 setSecrettestSecret 步驟。如需詳細資訊,請參閱輪換函式中的四個步驟

為您的密碼開啟輪換

使用 --rotation-rulesAutomaticallyAfterDays 參數指定輪換之間的天數。

aws secretsmanager rotate-secret --secret-id production/MyAwesomeAppSecret --rotation-lambda-arn arn:aws:lambda:region:123456789012:function:MySecretsManagerRotationFunction --rotation-rules AutomaticallyAfterDays=7

如需詳細資訊,請參閱輪換 AWS Secrets Manager 密碼

相關資訊

AWS Secrets Manager 輪換函式範本

如何在 Virtual Private Cloud 中連線至 AWS Secrets Manager 服務

使用 AWS Secrets Manager 密碼的 AWS 服務

AWS 官方已更新 8 個月前