在 Amazon ECS 中以程式設計方式擷取 Systems Manager 參數存放 - Amazon Elastic Container Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在 Amazon ECS 中以程式設計方式擷取 Systems Manager 參數存放

Systems Manager Parameter Store 提供安全的秘密儲存和管理。您可以將密碼、資料庫字串、EC2 執行個體 ID 和 AMI ID 等資料以及授權代碼儲存為參數值。您存放的值可以是純文字或加密資料。

您可以使用 Secrets Manager 來儲存敏感資料,而不是在應用程式中以純文字對敏感資訊進行硬式編碼。

我們建議使用這種擷取機密資料的方法,因為如果 Systems Manager 參數存放區參數隨後更新,應用程式會自動擷取最新版本。

在 Secrets Manager 中建立秘密。建立 Secret Manager 秘密後,更新應用程式程式碼即可擷取秘密。

在保護 Systems Manager Parameter Store 中的敏感資料之前,請先檢閱以下考量事項。

  • 僅支援儲存文字資料的秘密。不支援儲存二進位資料的秘密。

  • 使用介面 VPC 端點來增強安全控制。

  • 任務所使用的 VPC 必須使用 DNS 解析。

所需的 IAM 許可

若要使用此功能,您必須擁有 Amazon ECS 任務角色,並在您的任務定義中參考該角色。這可讓容器代理程式提取必要的 Systems Manager 資源。如需詳細資訊,請參閱 Amazon ECS 任務 IAM 角色

重要

對於使用 EC2 啟動類型的任務,您必須使用 ECS 代理程式組態變數 ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE=true,才能使用此功能。您可以在建立容器執行個體期間將其新增至 ./etc/ecs/ecs.config 檔案,也可以將其新增至現有的執行個體,然後重新啟動 ECS 代理程式。如需詳細資訊,請參閱 Amazon ECS 容器代理程式組態

若要允許存取您建立的 Systems Manager Parameter Store 參數,請將以下許可當作政策,手動新增到任務執行角色。如需有關如何管理許可的相關資訊,請參閱《IAM 使用者指南》中的新增和移除 IAM 身分許可

  • ssm:GetParameters – 如果參考任務定義中的 Systems Manager Parameter Store 參數,則此項目為必要。新增擷取 Systems Manager 參數的許可。

  • secretsmanager:GetSecretValue – 如果直接參考 Secrets Manager 秘密,或者 Systems Manager Parameter Store 參數參考任務定義中的 Secrets Manager 秘密,則此項目為必要。新增從 Secrets Manager 擷取密碼的許可。

  • kms:Decrypt – 只有在秘密使用客戶受管金鑰而非預設金鑰時,此項目為必要。您的自訂金鑰的 ARN 應該新增為資源。新增解密客戶受管金鑰的許可。

下列政策範例新增必要許可:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:GetParameters", "secretsmanager:GetSecretValue", "kms:Decrypt" ], "Resource": [ "arn:aws:ssm:region:aws_account_id:parameter/parameter_name", "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name", "arn:aws:kms:region:aws_account_id:key/key_id" ] } ] }

建立 參數

您可以使用 Systems Manager 主控台為您的敏感資料建立 Systems Manager Parameter Store 參數。如需詳細資訊,請參閱《AWS Systems Manager 使用者指南》中的建立 Systems Manager 參數 (主控台)建立 Systems Manager 參數 (AWS CLI)

更新應用程式,以程式設計方式擷取 Systems Manager Parameter Store 秘密

若要擷取儲存在 Systems Manager 參數存放區參數中的機密資料,請參閱 SDK 程式碼範例程式碼程式庫中使用 AWSAWS SDK 的 Systems Manager 程式碼範例