將敏感組態資料儲存在 AWS Secrets Manager中 - Amazon EMR

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

將敏感組態資料儲存在 AWS Secrets Manager中

發出自訂組態資料的 Amazon EMR 描述和列出 API 操作 (例如 DescribeClusterListInstanceGroups) 以純文字格式進行。Amazon EMR 與 整合, AWS Secrets Manager 因此您可以將資料存放在 Secrets Manager 中,並在組態中使用秘密 ARN。如此一來,您就不會以純文字格式將敏感的組態資料傳遞至 Amazon EMR,並將其暴露給外部 API。如果您指出金鑰值對包含儲存在 Secrets Manager 中的機密的 ARN,Amazon EMR 會在將組態資料傳送至叢集時擷取此機密。Amazon EMR 使用外部 API 顯示組態時,不會傳送註釋。

建立秘密

若要建立機密,請遵循《AWS Secrets Manager 使用者指南》建立 AWS Secrets Manager 機密中的步驟進行。在步驟 3 中,您必須選擇純文字欄位,才能輸入敏感值。

請注意,雖然 Secrets Manager 允許機密最多包含 65,536 個位元組,但 Amazon EMR 會將屬性金鑰 (不含註釋) 和擷取的機密值的組合長度限制為 1,024 個字元。

授予 Amazon EMR 存取權以擷取機密

Amazon EMR 使用 IAM 服務角色為您佈建和管理叢集。Amazon EMR 的服務角色會在佈建資源和執行服務層級的任務 (這些任務不會在執行叢集內 Amazon EC2 執行個體的內容中執行) 時,定義 Amazon EMR 允許的動作。如需有關服務角色的詳細資訊,請參閱 Amazon EMR 的服務角色 (EMR 角色)自訂 IAM 角色

若要允許 Amazon EMR 從 Secrets Manager 擷取機密值,請在啟動叢集時將下列政策陳述式新增至 Amazon EMR 角色。

{ "Sid":"AllowSecretsRetrieval", "Effect":"Allow", "Action":"secretsmanager:GetSecretValue", "Resource":[ "arn:aws:secretsmanager:<region>:<aws-account-id>:secret:<secret-name>" ] }

如果您使用客戶受管的 建立秘密 AWS KMS key,您還必須為您使用的金鑰將kms:Decrypt許可新增至 Amazon EMR 角色。如需詳細資訊,請參閱《AWS Secrets Manager 使用者指南》中的 AWS Secrets Manager的身分驗證與存取控制

在組態分類中使用機密

您可以將 EMR.secret@ 註釋新增至任何組態屬性,以指出金鑰值對包含儲存在 Secrets Manager 中的機密的 ARN。

下列範例顯示如何在組態分類中提供機密 ARN:

{ "Classification":"core-site", "Properties":{ "presto.s3.access-key":"<sensitive-access-key>", "EMR.secret@presto.s3.secret-key":"arn:aws:secretsmanager:<region>:<aws-account-id>:secret:<secret-name>" } }

在您建立叢集並提交已註釋的組態時,Amazon EMR 會驗證組態屬性。如果您的組態有效,Amazon EMR 會從組態中剔除註釋,並從 Secrets Manager 擷取機密以建立實際組態,然後再將其套用至叢集:

{ "Classification":"core-site", "Properties":{ "presto.s3.access-key":"<sensitive-access-key>", "presto.s3.secret-key":"<my-secret-key-retrieved-from-Secrets-Manager>" } }

在您呼叫 DescribeCluster 之類的動作時,Amazon EMR 將傳回叢集上的目前應用程式組態。如果應用程式組態屬性標記為包含機密 ARN,則 DescribeCluster 呼叫傳回的應用程式組態將包含 ARN 而非機密值。這可確保機密值僅在叢集上可見:

{ "Classification":"core-site", "Properties":{ "presto.s3.access-key":"<sensitive-access-key>", "presto.s3.secret-key":"arn:aws:secretsmanager:<region>:<aws-account-id>:secret:<secret-name>" } }

更新機密值

每當附接的執行個體群組啟動、重新設定或調整大小時,Amazon EMR 都會從已註釋的組態擷取機密值。您可以使用 Secret Manager 來修改在執行中叢集的組態中使用的機密值。執行此操作時,您可以向您想要接收更新值的每個執行個體群組提交重新組態請求。如需有關如何重新設定執行個體群組的詳細資訊,以及執行此操作時要考慮的事項,請參閱 重新設定執行中叢集中的執行個體群組