機密の構成データを次の場所に保存AWS Secrets Manager - Amazon EMR

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

機密の構成データを次の場所に保存AWS Secrets Manager

Amazon EMR には、カスタム設定データ (やなどListInstanceGroups) を出力する APIDescribeCluster オペレーションがプレーンテキストで記述され、一覧表示されます。Amazon EMRAWS 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 ではシークレットには最大 65536 バイトまで含めることができますが、Amazon EMR ではプロパティキー (アノテーションを除く) と取得したシークレット値を合わせた長さを 1024 文字に制限していることに注意してください。

Amazon EMR にアクセスしてシークレットを取得できるようにする

Amazon EMR は IAM サービスロールを使用して、クラスターのプロビジョニングと管理を行います。Amazon EMR のサービスロールは、リソースをプロビジョニングしてサービスレベルのタスクを実行する際に、これらのタスクがクラスター内で実行する Amazon EC2 インスタンスのコンテキストでは実行されない場合に、Amazon EMR に許可されるアクションを定義します。サービスロールの詳細については、「Amazon EMR のサービスロール (EMR ロール)」と「IAM ロールのカスタマイズ」を参照してください。

Amazon EMR がシークレットマネージャーからシークレット値を取得できるようにするには、クラスターを起動するときに Amazon EMR ロールに次のポリシーステートメントを追加します。

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

カスタマー管理でシークレットを作成する場合はAWS KMS key、使用するキーの Amazon EMRkms:Decrypt ロールにアクセス許可を追加する必要もあります。詳細については、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 は、設定をクラスターに適用する前に、アノテーションを設定から削除して実際の設定を作成します。

{ "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 は、アタッチされたインスタンスグループが起動、再設定、またはサイズ変更されるたびに、注釈付きの設定からシークレット値を取得します。Secrets Manager を使用して、実行中のクラスターの設定に使用されるシークレットの値を変更できます。その際、更新された値を受け取りたい各インスタンスグループに再構成リクエストを送信できます。インスタンスグループを再構成する方法と、その際に考慮すべき事項の詳細については、を参照してください実行中のクラスター内のインスタンスグループの再設定