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

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

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

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

建立秘密

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

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

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

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

若要允許 Amazon 從 Secrets Manager EMR擷取秘密值,請在啟動叢集時將下列政策陳述式新增至您的 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@註釋新增至任何組態屬性,以指示其鍵值對包含 ARN ,用於儲存在 Secrets Manager 中的秘密。

下列範例顯示如何在組態分類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 來修改在執行中叢集的組態中使用的機密值。執行此操作時,您可以向您想要接收更新值的每個執行個體群組提交重新組態請求。如需有關如何重新設定執行個體群組的詳細資訊,以及執行此操作時要考慮的事項,請參閱 重新設定執行中叢集中的執行個體群組