検出結果についての機密データのサンプルを取得するための設定オプションと要件 - Amazon Macie

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

検出結果についての機密データのサンプルを取得するための設定オプションと要件

オプションで Amazon Macie を設定して使用し、Macie が個々の検出結果で報告する機密データのサンプルを取得して公開することができます。検出結果についての機密データのサンプルを取得して公開する場合、Macie は対応する機密データ検出の結果のデータを使用して、対象の Amazon Simple Storage Service (Amazon S3) オブジェクト内の機密データの出現を見つけます。次に、Macie は該当オブジェクトからそれらの出現のサンプルを抽出します。Macie は、抽出したデータを指定した AWS Key Management ServiceAWS KMS キーで暗号化し、暗号化されたデータを一時的にキャッシュに保存し、結果にそのデータを結果として返します。Macie は、運用上の問題を解決するために一時的に追加の保存が必要になった場合を除き、抽出と暗号化の直後に、データをキャッシュから完全に削除します。

Macie は、対象の S3 オブジェクトについての機密データのサンプルを検索、取得、暗号化、公開することを目的として、アカウントのために Macie サービスリンクロールを使用することはありません。代わりに、Macie はアカウントのために構成した設定とリソースを使用します。Macie で設定を構成する際には、対象の S3 オブジェクトに対するアクセスメソッドを指定します。また、サンプルを暗号化するために使用する AWS KMS key も指定します。アジアパシフィック (大阪) およびイスラエル (テルアビブ) リージョンを除く、Macie が現在利用可能なすべての AWS リージョン で設定を構成できます。

対象の S3 オブジェクトにアクセスし、そこから機密データのサンプルを取得するには、2 つのオプションがあります。AWS Identity and Access Management (IAM) ユーザー認証情報を使用するか、または IAM ロールを引き受けるように Macie を設定できます:

  • IAM ユーザー認証情報を使用する – このオプションを使用すると、アカウントの各ユーザーは、個別の IAM ID を使用して、サンプルを検索、取得、暗号化、公開します。これは、ユーザーまたはロールが必要なリソースとデータにアクセスし、必要なアクションを実行することを許可されている場合は、検出結果についての機密データのサンプルを取得して公開することができることを意味します。

  • IAM ロールを引き受ける – このオプションを使用すると、Macie にアクセスを委任する IAM ロールを作成します。また、ロールの信頼ポリシーと許可ポリシーが、Macie がロールを引き受けるためのすべての要件を満たしているようにしてください。その後、アカウントのユーザーが、検出結果についての機密データのサンプルを検索、取得、暗号化、公開することを選択すると、Macie がそのロールを引き受けます。

いずれの設定も、組織のために委任された Macie 管理者アカウント、組織内の Macie メンバーアカウント、スタンドアロン Macie アカウントなど、あらゆるタイプの Macie アカウントで使用できます。

次のトピックでは、アカウントのための設定とリソースを構成する方法を決定するのに役立つオプション、要件、考慮事項について説明します。これには、IAM ロールにアタッチする信頼ポリシーと許可ポリシーが含まれます。機密データのサンプルを取得して公開するために使用できる追加のレコメンデーションとポリシーの例については、AWS セキュリティブログのブログ記事「Amazon Macie を利用して S3 バケットの機密データをプレビューする方法」を参照してください。

使用するアクセスメソッドの決定

AWS 環境に最適な設定を決定する場合、重要な考慮事項は、組織として一元的に管理されている複数の Amazon Macie アカウントが環境に含まれているかどうかです。自分が組織の委任された Macie の管理者である場合、IAM ロールを引き受けるように Macie を設定すると、組織内のアカウントのために、対象の S3 オブジェクトからの機密データのサンプルの取得を効率化できます。このアプローチでは、管理者アカウントに IAM ロールを作成します。また、該当の各メンバーアカウントにも IAM ロールを作成します。管理者アカウントのロールは、Macie に対するアクセスを委任します。メンバーアカウントのロールは、管理者アカウントのロールに対するクロスアカウントアクセスを委任します。その後、実装されている場合は、メンバーアカウントのために、ロールの連鎖を使用して対象の S3 オブジェクトにアクセスできます。

また、デフォルトで個々の検出結果に直接アクセスできるようにするユーザーについても検討します。検出結果についての機密データのサンプルを取得して公開するには、ユーザーはまず、検出結果にアクセスできる必要があります。

  • 機密データ検出ジョブ – ジョブを作成するアカウントのみが、ジョブが生成する検出結果にアクセスできます。Macie の管理者アカウントがある場合は、組織内の任意のアカウントのために、S3 バケット内のオブジェクトを分析するジョブを設定できます。そのため、ジョブは、メンバーアカウントが所有するバケット内のオブジェクトについての検出結果を生成できます。メンバーアカウントまたはスタンドアロン Macie アカウントがある場合は、アカウントが所有するバケット内のオブジェクトのみを分析するようにジョブを設定できます。

  • 機密データの自動検出 – Macie の管理者アカウントのみが、組織内のアカウントのために、自動検出によって生成された検出結果にアクセスできます。メンバーアカウントはこれらの検出結果にアクセスできません。スタンドアロン Macie アカウントがある場合は、自分のアカウントのためにのみ、自動検出によって生成された検出結果にアクセスできます。

IAM ロールを使用して対象の S3 オブジェクトにアクセスする予定がある場合は、次の点も考慮してください:

  • オブジェクトにおける機密データの出現を特定するには、検出結果についての対応する機密データ検出の結果が、Macie が Hash-based Message Authentication Code (HMAC) AWS KMS key で署名した S3 オブジェクトに保存されている必要があります。Macie は、機密データ検出の結果の完全性と信頼性を検証できる必要があります。検証できない場合、Macie は、機密データのサンプルを取得するための IAM ロールを引き受けません。これは、アカウントのために、S3 オブジェクト内のデータに対するアクセスを制限することを目的とした追加のガードレールです。

  • カスタマーマネージド AWS KMS key を使用して暗号化されたオブジェクトから機密データのサンプルを取得するには、IAM ロールがキーを使用してデータを復号することを許可する必要があります。より具体的には、キーのポリシーで、ロールによる kms:Decrypt アクションの実行が許可されている必要があります。他のタイプのサーバー側の暗号化の場合、対象のオブジェクトを復号するために追加の許可やリソースは必要ありません。詳細については、「対象の S3 オブジェクトの復号」を参照してください。

  • 別のアカウントのためにオブジェクトから機密データのサンプルを取得するには、現在、該当の AWS リージョン のアカウントのために委任された Macie の管理者である必要があります。加えて:

    • 現在、該当のリージョンのメンバーアカウントのために Macie が有効になっている必要があります。

    • メンバーアカウントには、Macie の管理者アカウントの IAM ロールに対するクロスアカウントアクセスを委任する IAM ロールが必要です。ロールの名前は、Macie の管理者アカウントとメンバーアカウントで同じである必要があります。

    • メンバーアカウントの IAM ロールの信頼ポリシーには、設定のために正しい外部 ID を指定する条件が含まれている必要があります。この ID は、Macie の管理者アカウントのために設定を構成した後に Macie が自動的に生成する一意の英数字の文字列です。信頼ポリシーにおける外部 ID の使用の詳細については、「AWS Identity and Access Management ユーザーガイド」の「AWS リソースに対するアクセス権を第三者に付与するときに外部 ID を使用する方法」を参照してください。

    • メンバーアカウントの IAM ロールが Macie のすべての要件を満たしている場合、メンバーアカウントは、自らのアカウントのためにオブジェクトから機密データのサンプルを取得することを目的として、Macie の設定を構成して有効にする必要はありません。Macie は、Macie の管理者アカウントの設定と IAM ロール、およびメンバーアカウントの IAM ロールのみを使用します。

      ヒント

      アカウントが大規模な組織に属している場合は、AWS CloudFormation テンプレートとスタックセットを使用して、組織内のメンバーアカウントのために IAM ロールをプロビジョニングおよび管理することを検討してください。テンプレートとスタックセットの作成と使用については、「AWS CloudFormation ユーザーガイド」を参照してください。

      開始点として機能する CloudFormation テンプレートを確認し、必要に応じてダウンロードするには、Amazon Macie コンソールを使用できます。コンソールのナビゲーションペインの [設定] で、[サンプルを公開] を選択します。[編集] を選択し、[メンバーロールの許可と CloudFormation テンプレートを表示] を選択します。

このセクションの後続のトピックでは、各タイプの設定に関する追加の詳細と考慮事項を説明します。IAM ロールの場合、これには、ロールにアタッチする信頼ポリシーと許可ポリシーが含まれます。どのタイプの設定が環境に最適であるかが不明な場合は、AWS の管理者に問い合わせてください。

IAM ユーザー認証情報を使用した、対象の S3 オブジェクトに対するアクセス

IAM ユーザー認証情報を使用して機密データのサンプルを取得するように Amazon Macie を設定すると、Macie アカウントの各ユーザーは自らの IAM ID を使用して、個々の検出結果についてのサンプルを検索、取得、暗号化、公開します。これは、ユーザーの IAM ID が必要なリソースとデータにアクセスし、必要なアクションを実行することを許可されている場合は、検出結果についての機密データのサンプルを取得して公開することができることを意味します。必要なアクションはすべて AWS CloudTrail にログで記録されます。

特定の検出結果について機密データのサンプルを取得して公開するには、ユーザーによる次のデータおよびリソースに対するアクセスが許可されている必要があります: 検出結果、対応する機密データ検出の結果、対象の S3 バケット、および対象の S3 オブジェクト。また、対象のオブジェクトの暗号化に使用した AWS KMS key (該当する場合)、および機密データのサンプルの暗号化に使用するように Macie を設定した AWS KMS key の使用も許可されている必要があります。IAM ポリシー、リソースポリシー、または他の許可設定で必要なアクセスが拒否されている場合、ユーザーは、検出結果のサンプルを取得して公開することができません。

このような構成を設定するには、次の一般的なタスクを実行します。

  1. 機密データ検出の結果用のリポジトリを設定していることを確認します。

  2. 機密データのサンプルの暗号化に使用するための AWS KMS key を設定します。

  3. Macie で設定を構成するための許可を確認します。

  4. Macie で設定を構成して有効にします。

これらのタスクの実行の詳細については、「検出結果についての機密データのサンプルを取得して公開するように Amazon Macie を設定する」を参照してください。

対象の S3 オブジェクトにアクセスするための IAM ロールの引き受け

IAM ロールを引き受けることで機密データのサンプルを取得するように Amazon Macie を設定するには、まず Macie にアクセスを委任する IAM ロールを作成します。ロールの信頼ポリシーと許可ポリシーが、Macie がロールを引き受けるためのすべての要件を満たしているようにしてください。Macie アカウントのユーザーが検出結果についての機密データのサンプルを取得して公開することを選択すると、Macie は、対象の S3 オブジェクトからサンプルを取得するためのロールを引き受けます。Macie は、ユーザーが検出結果についてのサンプルを取得して公開することを選択した場合にのみ、ロールを引き受けます。ロールを引き受けるために、Macie は AWS Security Token Service (AWS STS) API の AssumeRole オペレーションを使用します。必要なアクションはすべて AWS CloudTrail にログで記録されます。

特定の検出結果についての機密データのサンプルを取得して公開するには、その検出結果、対応する機密データ検出の結果、および機密データのサンプルを暗号化するために使用するように Macie を設定する AWS KMS key に対するユーザーによるアクセスが許可されている必要があります。IAM ロールは、Macie が対象の S3 バケットおよび対象の S3 オブジェクトにアクセスするのを許可する必要があります。また、該当する場合、ロールは、対象のオブジェクトの暗号化に使用された AWS KMS key を使用することを許可されている必要があります。IAM ポリシー、リソースポリシー、または他の許可設定で必要なアクセスが拒否されている場合、ユーザーは、検出結果のサンプルを取得して公開することができません。

このような構成を設定するには、次の一般的なタスクを実行します。組織内にメンバーアカウントがある場合は、Macie の管理者と協力して、アカウントのために設定およびリソースを構成するかどうか、およびその方法を決定します。

  1. 次を定義します:

    • Macie に引き受けさせる IAM ロールの名前。アカウントが組織に属している場合、この名前は、委任された Macie の管理者アカウントと、組織内の該当の各メンバーアカウントで同じである必要があります。この名前が異なる場合、Macie の管理者は、該当のメンバーアカウントのために、対象の S3 オブジェクトにアクセスできません。

    • IAM ロールにアタッチする IAM 許可ポリシーの名前。アカウントが組織に属している場合は、組織内の該当の各メンバーアカウントで同じポリシー名を使用することをお勧めします。これにより、メンバーアカウントでのロールのプロビジョニングおよび管理を合理化できます。

  2. 機密データ検出の結果用のリポジトリを設定していることを確認します。

  3. 機密データのサンプルの暗号化に使用するための AWS KMS key を設定します。

  4. IAM ロールを作成し、Macie で設定を構成するための許可を確認します。

  5. 自分が組織の委任された Macie の管理者である場合、またはスタンドアロン Macie アカウントがある場合:

    1. アカウントのために、IAM ロールを作成して設定します。ロールの信頼ポリシーと許可ポリシーが、Macie がロールを引き受けるためのすべての要件を満たしているようにしてください。これらの要件の詳細については、次のトピックを参照してください。

    2. Macie で設定を構成して有効にします。その後、Macie は設定の外部 ID を生成します。ユーザーが組織の Macie 管理者である場合は、この ID を書き留めます。該当の各メンバーアカウントの IAM ロールの信頼ポリシーでは、この ID が指定される必要があります。

  6. 組織にメンバーアカウントがある場合:

    1. アカウントの IAM ロールの信頼ポリシーで指定する外部 ID については、Macie の管理者に問い合わせてください。また、作成する IAM ロールと許可ポリシーの名前も確認します。

    2. アカウントのために、IAM ロールを作成して設定します。ロールの信頼ポリシーと許可ポリシーが、Macie の管理者がロールを引き受けるためのすべての要件を満たしているようにしてください。これらの要件の詳細については、次のトピックを参照してください。

    3. (オプション) 自分のアカウントのために、対象の S3 オブジェクトから機密データのサンプルを取得して公開する場合は、Macie で設定を構成して有効にします。サンプルを取得するための IAM ロールを Macie に引き受けさせる場合は、まずアカウントに追加の IAM ロールを作成して設定します。この追加ロールの信頼ポリシーと許可ポリシーが、Macie がロールを引き受けるためのすべての要件を満たしているようにしてください。その後、Macie で設定を構成し、この追加ロールの名前を指定します。ロールのポリシー要件の詳細については、次のトピックを参照してください。

これらのタスクの実行の詳細については、「検出結果についての機密データのサンプルを取得して公開するように Amazon Macie を設定する」を参照してください。

対象の S3 オブジェクトにアクセスするための IAM ロールの設定

IAM ロールを使用して対象の S3 オブジェクトにアクセスするには、まず Amazon Macie にアクセスを委任するロールを作成して設定します。ロールの信頼ポリシーと許可ポリシーが、Macie がロールを引き受けるためのすべての要件を満たしているようにしてください。これを行う方法は、保有している Macie アカウントのタイプによって異なります。

次のセクションでは、Macie アカウントのタイプごとに、IAM ロールにアタッチする信頼ポリシーと許可ポリシーについて詳しく説明します。保有しているアカウントのタイプに応じたセクションを選択してください。

注記

組織にメンバーアカウントがある場合は、アカウントのために 2 つの IAM ロールを作成して設定する必要がある場合があります。

  • Macie の管理者が、アカウントのために、対象の S3 オブジェクトから機密データのサンプルを取得して公開するのを許可するには、管理者のアカウントが引き受けることができるロールを作成して設定します。これらの詳細については、Macie メンバーアカウントのセクションを選択します。

  • 自分のアカウントのために、対象の S3 オブジェクトから機密データのサンプルを取得して公開するには、Macie が引き受けることができるロールを作成して設定します。これらの詳細については、スタンドアロン Macie アカウントのセクションを選択します。

いずれかの IAM ロールを作成して設定する前に、Macie の管理者と協力してアカウントのために適切な設定を決定します。

IAM を使用したロールの作成の詳細については、「AWS Identity and Access Management ユーザーガイド」の「カスタム信頼ポリシーを使用したロールの作成」を参照してください。

自分が組織の委任された Macie の管理者である場合は、まず IAM ポリシーエディタを使用して IAM ロールの許可ポリシーを作成します。ポリシーは次のとおりである必要があります。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "RetrieveS3Objects", "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "*" ] }, { "Sid": "AssumeMacieRevealRoleForCrossAccountAccess", "Effect": "Allow", "Action": [ "sts:AssumeRole" ], "Resource": "arn:aws:iam::*:role/IAMRoleName" } ] }

IAMRoleName は、組織のアカウントのために、対象の S3 オブジェクトから機密データのサンプルを取得する際に Macie が引き受ける IAM ロールの名前です。この値を、アカウントのために作成しようとしているロールの名前、および組織内の該当のメンバーアカウントのために作成する予定のロールの名前に置き換えます。この名前は、Macie の管理者アカウントと、該当の各メンバーアカウントで同じである必要があります。

注記

前述の許可ポリシーでは、最初のステートメントの Resource 要素で、ワイルドカード文字 (*) が使用されています。これにより、アタッチされた IAM エンティティは、組織が所有するすべての S3 バケットからオブジェクトを取得できるようになります。特定のバケットについてのみ、このアクセスを許可するには、ワイルドカード文字を各バケットの Amazon リソースネーム (ARN) に置き換えます。例えば、DOC-EXAMPLE-BUCKET という名前のバケット内のオブジェクトに対するアクセスのみを許可するには、要素を次のように変更します:

"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"

個々のアカウントのために、特定の S3 バケット内のオブジェクトに対するアクセスを制限することもできます。これを行うには、該当の各アカウントの IAM ロールの許可ポリシーの Resource 要素でバケット ARN を指定します。詳細と例については、「AWS Identity and Access Management ユーザーガイド」の「IAM JSON ポリシー要素: Resource」を参照してください。

IAM ロールの許可ポリシーを作成した後、ロールを作成して設定します。IAM コンソールを使用してこれを行う場合は、ロールの [信頼されたエンティティタイプ] として [カスタム信頼ポリシー] を選択します。ロールの信頼されたエンティティを定義する信頼ポリシーについては、次のように指定します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowMacieReveal", "Effect": "Allow", "Principal": { "Service": "reveal-samples.macie.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "accountID" } } } ] }

accountID はお客様の AWS アカウント のアカウント ID です。この値を自分の 12 桁のアカウント ID に置き換えます。

前述の信頼ポリシーでは次のようになります:

  • Principal 要素は、対象の S3 オブジェクト reveal-samples.macie.amazonaws.com から機密データのサンプルを取得する際に Macie が使用するサービスプリンシパルを指定します。

  • Action 要素は、サービスプリンシパルによる実行が許可されているアクション (AWS Security Token Service (AWS STS) API の AssumeRole オペレーション) を指定します。

  • Condition 要素は、aws:SourceAccount グローバル条件コンテキストキーを使用する条件を定義します。この条件により、指定されたアクションを実行できるアカウントが決まります。この場合、Macie は指定されたアカウント(accountID) のためにのみ、ロールを引き受けることができます。この条件は、Macieが AWS STS とのトランザクション中に混乱した使節として使用されるのを防ぐのに役立ちます。

IAM ロールの信頼ポリシーを定義した後、許可ポリシーをロールにアタッチします。これは、ロールの作成を開始する前に作成した許可ポリシーである必要があります。その後、IAM の残りのステップを完了して、ロールの作成と設定を完了します。完了したら、Macie で設定を構成して有効にします

Macie メンバーアカウントがあり、アカウントのために、対象の S3 オブジェクトから機密データのサンプルを取得して公開することを Macie の管理者に許可したい場合は、まず Macie の管理者に次の情報を問い合わせてください。

  • 作成する IAM ロールの名前。この名前は、自分のアカウントと、組織の Macie の管理者アカウントで同じである必要があります。

  • ロールにアタッチする IAM 許可ポリシーの名前。

  • ロールの信頼ポリシーで指定する外部 ID。この ID は、Macie の管理者の設定用に Macie が生成した外部 ID である必要があります。

この情報を受け取ったら、IAM ポリシーエディタを使用して、ロールの許可ポリシーを作成します。ポリシーは次のとおりである必要があります。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "RetrieveS3Objects", "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "*" ] } ] }

前述の許可ポリシーにより、アタッチされた IAM エンティティが、アカウントのために、すべての S3 バケットからオブジェクトを取得できるようになります。これは、ポリシー内の Resource 要素でワイルドカード文字 (*) が使用されているためです。特定のバケットについてのみ、このアクセスを許可するには、ワイルドカード文字を各バケットの Amazon リソースネーム (ARN) に置き換えます。例えば、DOC-EXAMPLE-BUCKET2 という名前のバケット内のオブジェクトに対するアクセスのみを許可するには、要素を次のように変更します:

"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET2/*"

詳細と例については、「AWS Identity and Access Management ユーザーガイド」の「IAM JSON ポリシー要素: Resource」を参照してください。

IAM ロールの許可ポリシーを作成した後、ロールを作成します。IAM コンソールを使用してロールを作成する場合は、ロールの [信頼されたエンティティタイプ] として [カスタム信頼ポリシー] を選択します。ロールの信頼されたエンティティを定義する信頼ポリシーについては、次のように指定します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowMacieAdminRevealRoleForCrossAccountAccess", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::administratorAccountID:role/IAMRoleName" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "externalID", "aws:PrincipalOrgID": "${aws:ResourceOrgID}" } } } ] }

前述のポリシーで、プレースホルダーの値を AWS 環境の正しい値に置き換えます。ここでは次のとおりです:

  • administratorAccountID は、Macie の管理者アカウントの 12 桁のアカウント ID です。

  • IAMRoleName は、Macie の管理者のアカウントの IAM ロールの名前です。これは、Macie の管理者から受け取った名前である必要があります。

  • externalID は、Macie の管理者から受け取った外部 ID です。

一般に、信頼ポリシーにより、Macie の管理者は、アカウントのために、対象の S3 オブジェクトから機密データのサンプルを取得して公開するためのロールを引き受けることができます。Principal 要素は、Macie の管理者のアカウントにおける IAM ロールの ARN を指定します。これは、Macie の管理者が、組織のアカウントのために、機密データのサンプルを取得して公開するために使用するロールです。Condition ブロックは、そのロールを引き受けることができるユーザーをさらに決定する 2 つの条件を定義します。

  • 1 つ目の条件は、組織の設定に固有の外部 ID を指定します。外部 ID の詳細については、「AWS Identity and Access Management ユーザーガイド」の「AWS リソースへのアクセス権を第三者に付与するときに外部 ID を使用する方法」を参照してください。

  • 2 つ目の条件は、aws:PrincipalOrgID グローバル条件コンテキストキーを使用します。キーの値は、AWS Organizations (${aws:ResourceOrgID}) 内の組織の一意の識別子を表す動的変数です。この条件により、AWS Organizations の同じ組織に属しているアカウントのみにアクセスが制限されます。Macie で招待を承諾して組織に参加した場合は、この条件をポリシーから削除します。

IAM ロールの信頼ポリシーを定義した後、許可ポリシーをロールにアタッチします。これは、ロールの作成を開始する前に作成した許可ポリシーである必要があります。その後、IAM の残りのステップを完了して、ロールの作成と設定を完了します。Macie でロールの設定を構成および入力しないでください。

スタンドアロン Macie アカウントまたは Macie メンバーアカウントがあり、自分のアカウントのために、対象の S3 オブジェクトから機密データのサンプルを取得して公開する場合は、まず IAM ポリシーエディタを使用して IAM ロールの許可ポリシーを作成します。ポリシーは次のとおりである必要があります。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "RetrieveS3Objects", "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "*" ] } ] }

前述の許可ポリシーでは、Resource 要素で、ワイルドカード文字 (*) が使用されています。これにより、アタッチされた IAM エンティティは、アカウントのために、すべての S3 バケットからオブジェクトを取得できるようになります。特定のバケットについてのみ、このアクセスを許可するには、ワイルドカード文字を各バケットの Amazon リソースネーム (ARN) に置き換えます。例えば、DOC-EXAMPLE-BUCKET3 という名前のバケット内のオブジェクトに対するアクセスのみを許可するには、要素を次のように変更します:

"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET3/*"

詳細と例については、「AWS Identity and Access Management ユーザーガイド」の「IAM JSON ポリシー要素: Resource」を参照してください。

IAM ロールの許可ポリシーを作成した後、ロールを作成します。IAM コンソールを使用してロールを作成する場合は、ロールの [信頼されたエンティティタイプ] として [カスタム信頼ポリシー] を選択します。ロールの信頼されたエンティティを定義する信頼ポリシーについては、次のように指定します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowMacieReveal", "Effect": "Allow", "Principal": { "Service": "reveal-samples.macie.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "accountID" } } } ] }

accountID はお客様の AWS アカウント のアカウント ID です。この値を自分の 12 桁のアカウント ID に置き換えます。

前述の信頼ポリシーでは次のようになります:

  • Principal 要素は、対象の S3 オブジェクト reveal-samples.macie.amazonaws.com から機密データのサンプルを取得して公開する際に Macie が使用するサービスプリンシパルを指定します。

  • Action 要素は、サービスプリンシパルによる実行が許可されているアクション (AWS Security Token Service (AWS STS) API の AssumeRole オペレーション) を指定します。

  • Condition 要素は、aws:SourceAccount グローバル条件コンテキストキーを使用する条件を定義します。この条件により、指定されたアクションを実行できるアカウントが決まります。Macie は指定されたアカウント(accountID) のためにのみ、ロールを引き受けることができます。この条件は、Macieが AWS STS とのトランザクション中に混乱した使節として使用されるのを防ぐのに役立ちます。

IAM ロールの信頼ポリシーを定義した後、許可ポリシーをロールにアタッチします。これは、ロールの作成を開始する前に作成した許可ポリシーである必要があります。その後、IAM の残りのステップを完了して、ロールの作成と設定を完了します。完了したら、Macie で設定を構成して有効にします

対象の S3 オブジェクトの復号

Amazon S3 は S3 オブジェクトの複数の暗号化オプションをサポートしています。これらのオプションのほとんどでは、IAM ユーザーまたはロールが対象のオブジェクトから機密データのサンプルを復号して取得するために追加のリソースや許可は必要ありません。これは、Amazon S3 マネージドキーまたは AWS マネージド AWS KMS key を使用したサーバー側の暗号化を使用して暗号化されたオブジェクトの場合に当てはまります。

ただし、S3 オブジェクトがカスタマーマネージド AWS KMS key で暗号化されている場合、オブジェクトから機密データのサンプルを復号して取得するには追加の許可が必要です。より具体的には、KMS キーのキーポリシーでは、IAM ユーザーまたはロールによる kms:Decrypt アクションの実行が許可されている必要があります。許可されていない場合、エラーが発生し、Macie はオブジェクトからサンプルを取得しません。IAM ユーザーのためにこのアクセスを提供する方法については、「AWS Key Management Service デベロッパーガイド」の「AWS KMS の認証とアクセスコントロール」を参照してください。

IAM ロールのためにこのアクセスを提供する方法は、AWS KMS key を所有するアカウントがそのロールも所有しているかどうかによって異なります。

  • 同じアカウントが KMS キーとロールを所有している場合、アカウントのユーザーはキーのポリシーを更新する必要があります。

  • 1 つのアカウントが KMS キーを所有し、別のアカウントがロールを所有している場合、そのキーを所有するアカウントのユーザーはキーに対するクロスアカウントアクセスを許可する必要があります。

このトピックでは、S3 オブジェクトから機密データのサンプルを取得するために作成した IAM ロールのためにこれらのタスクを実行する方法について説明します。両方のシナリオの例も示します。他のシナリオでカスタマーマネージド AWS KMS keys に対するアクセスを許可する方法については、「AWS Key Management Service デベロッパーガイド」の「AWS KMS の認証とアクセスコントロール」を参照してください。

カスタマーマネージドキーへの同じアカウントのアクセスを許可する

同じアカウントが AWS KMS key と IAM ロールの両方を所有している場合、アカウントのユーザーはキーのポリシーにステートメントを追加する必要があります。追加のステートメントでは、IAM ロールによるキーを使用したデータの復号が許可されている必要があります。キーポリシーの更新の詳細な情報については、AWS Key Management Serviceデベロッパーガイドキーポリシーの変更を参照してください。

ステートメントにおいて:

  • Principal 要素は、IAM ロールの Amazon リソースネーム (ARN) を指定するものである必要があります。

  • Action 配列は、kms:Decrypt アクションを指定する必要があります。これは、キーで暗号化されるオブジェクトを復号するために IAM ロールが実行することを許可される必要がある唯一の AWS KMS アクションです。

以下は、KMS キーのポリシーに追加するステートメントの例です。

{ "Sid": "Allow the Macie reveal role to use the key", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/IAMRoleName" }, "Action": [ "kms:Decrypt" ], "Resource": "*" }

前の例では、以下のようになっています。

  • Principal 要素の AWS フィールドは、アカウントの IAM ロールの ARN を指定します。これにより、ロールがポリシーステートメントで指定されたアクションを実行することを許可します。123456789012 はアカウント ID の例です。この値をロールと KMS キーを所有するアカウントのアカウント ID に置き換えます。IAMRoleName は名前の例です。この値をアカウントの IAM ロールの名前に置き換えます。

  • Action 配列は、IAM ロールが KMS キーを使用して実行することを許可されたアクション (キーで暗号化される暗号文を復号) を指定します。

このステートメントをキーポリシーのどこに追加するかは、ポリシーに現在含まれている構造と要素によって異なります。ステートメントをポリシーに追加するときに、構文が有効であることを確認します。キーポリシーは JSON 形式を使用します。これは、ステートメントをポリシーのどこに追加するかに応じて、ステートメントの前後にカンマを追加する必要があることも意味します。

カスタマーマネージドキーへのクロスアカウントアクセスを許可する

1 つのアカウントが AWS KMS key を所有 (キー所有者) し、別のアカウントが IAM ロールを所有 (ロール所有者) している場合、キー所有者は、キーに対するクロスアカウントアクセスをロール所有者に提供する必要があります。これを実現する方法の 1 つは許可を使用することです。付与 は、ポリシーツールであり、付与によって指定された条件が満たされている場合、AWS プリンシパルに暗号化オペレーションで (KMS キー) の使用を許可します。付与の詳細については、AWS Key Management Service デベロッパーガイドのAWS KMS での付与を参照してください。

このアプローチでは、キー所有者はまず、キーのポリシーで、ロール所有者によるキーの許可の作成が許可されているようにします。その後、ロール所有者はキーの許可を作成します。この許可は、関連する許可をロール所有者のアカウントの IAM ロールに委任します。これにより、ロールは、キーを使用して暗号化された S3 オブジェクトを復号できるようになります。

ステップ 1: キーポリシーを変更する

キー所有者は、ロール所有者が自ら (ロール所有者) のアカウントの IAM ロールのために許可を作成することを許可するステートメントが、キーポリシーに含まれているようにする必要があります。このステートメントでは、Principal 要素は、ロールの所有者のアカウントの ARN を指定する必要があります。Action 配列は、kms:CreateGrant アクションを指定する必要があります。Condition ブロックは、指定されたアクションに対するアクセスをフィルタリングできます。以下は、KMS キーのポリシーのこのステートメントの例です。

{ "Sid": "Allow a role in an account to create a grant", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Action": [ "kms:CreateGrant" ], "Resource": "*", "Condition": { "StringEquals": { "kms:GranteePrincipal": "arn:aws:iam::111122223333:role/IAMRoleName" }, "ForAllValues:StringEquals": { "kms:GrantOperations": "Decrypt" } } }

前の例では、以下のようになっています。

  • Principal 要素の AWS フィールドは、ロール所有者のアカウントの ARN を指定します。これにより、アカウントがポリシーステートメントで指定されたアクションを実行することを許可します。111122223333 はアカウント ID の例です。この値をロール所有者のアカウントのアカウント ID に置き換えます。

  • Action 配列は、ロール所有者が KMS キーを使用して実行することを許可されたアクションを指定します (キーの許可を作成)。

  • Condition ブロックは、条件演算子と次の条件キーを使用して、ロール所有者が KMS キーに対して実行することを許可されているアクションに対するアクセスをフィルタリングします。

    • kms:GranteePrincipal – この条件は、ロール所有者が、アカウント内の IAM ロールの ARN である、指定された許可付与対象プリンシパルのためにのみ、許可を作成することを許可します。そのARNでは、111122223333 はアカウント ID の例です。この値をロール所有者のアカウントのアカウント ID に置き換えます。IAMRoleName は名前の例です。この値をロール所有者のアカウントの IAM ロールの名前に置き換えます。

    • kms:GrantOperations – この条件は、ロール所有者が、AWS KMS Decrypt アクション (キーを使用して暗号化された暗号文の復号) を実行するための許可を委任するためだけに許可を作成することを許可します。これにより、ロール所有者は、KMS キーに対して他のアクションを実行するための許可を委任する許可を作成できなくなります。Decrypt アクションは、キーで暗号化されるオブジェクトを復号するために IAM ロールが実行することを許可される必要がある唯一の AWS KMS アクションです。

キー所有者がこのステートメントをキーポリシーのどこに追加するかは、ポリシーに現在含まれている構造と要素によって異なります。キー所有者がステートメントを追加するときは、構文が有効であることを確認する必要があります。キーポリシーは JSON 形式を使用します。これは、ステートメントをポリシーのどこに追加するかに応じて、キー所有者はステートメントの前後にカンマを追加する必要があることも意味します。キーポリシーの更新の詳細な情報については、AWS Key Management Service デベロッパーガイドキーポリシーの変更を参照してください。

ステップ 2: 許可を作成する

キー所有者が必要に応じてキーポリシーを更新した後、ロール所有者はキーの許可を作成します。この許可は、関連する許可を (ロール所有者の) アカウントの IAM ロールに委任します。ロール所有者が許可を作成する前に、ロール所有者は、kms:CreateGrant アクションの実施が許可されていることを確認する必要があります。このアクションにより、ロール所有者が既存のカスタマーマネージド AWS KMS key に許可を追加することが許可されます。

許可を作成するには、ロール所有者は AWS Key Management Service APIの CreateGrant オペレーションを使用できます。ロール所有者が許可を作成するときに、必要なパラメータに次の値を指定する必要があります。

  • KeyId – KMS キーの ARN。KMS キーへのクロスアカウントアクセスでは、この値は ARN である必要があります。キー ID にすることはできません。

  • GranteePrincipal – アカウント内の IAM ロールの ARN。この値は arn:aws:iam::111122223333:role/IAMRoleName である必要があります。ここで、111122223333 はロール所有者のアカウントのアカウント ID であり、IAMRoleName はロールの名前です。

  • Operations – AWS KMS 復号アクション (Decrypt)。これは、KMS キーで暗号化されるオブジェクトを復号するために IAM ロールが実行することを許可される必要がある唯一の AWS KMS アクションです。

ロール所有者が AWS Command Line Interface (AWS CLI) を使用している場合は、create-grant コマンドを実行して許可を作成できます。以下の例のように指定します。この例は Microsoft Windows 用にフォーマットされており、読みやすさを向上させるためにキャレット (^) の行連結文字を使用します。

C:\> aws kms create-grant ^ --key-id arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab ^ --grantee-principal arn:aws:iam::111122223333:role/IAMRoleName ^ --operations "Decrypt"

実行する条件は以下のとおりです。

  • key-id は、付与を適用する KMS キーの ARN を指定します。

  • grantee-principal は、許可によって指定されたアクションの実行を許可された IAM ロールの ARN を指定します。この値は、キーポリシーの kms:GranteePrincipal 条件によって指定された ARN と一致する必要があります。

  • operations は、許可が、指定されたプリンシパルが実行することを許可するアクション (キーで暗号化される暗号文の復号) を指定します。

コマンドが正常に実行された場合は、以下のような出力が表示されます。

{ "GrantToken": "<grant token>", "GrantId": "1a2b3c4d2f5e69f440bae30eaec9570bb1fb7358824f9ddfa1aa5a0dab1a59b2" }

ここで、GrantToken は、作成された付与を表す、一意で、非シークレットで、可変長の base64 でエンコードされた文字列であり、GrantIdは、付与の一意の識別子です。