Amazon Macie を用いた暗号化された Amazon S3 オブジェクトの分析 - Amazon Macie

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

Amazon Macie を用いた暗号化された Amazon S3 オブジェクトの分析

AWS アカウント でAmazon Macie を有効化すると、Macieは サービスにリンクされたロールを作成し、これにより、Amazon Simple Storage Service (Amazon S3) および他の AWS のサービス をユーザーに代わってコールするために必要なアクセス許可が Macie に付与されます。サービスにリンクされたロールを使用すると、サービスが自動でアクションを完了させるのに、アクセス許可を手動で追加する必要がないため、AWS のサービス の設定プロセスが簡単になります。このタイプのロールの詳細については、AWS Identity and Access Management ユーザーガイドサービスにリンクされたロールの使用を参照してください。

Macie のサービスリンクロールAWSServiceRoleForAmazonMacieのアクセス許可ポリシーにより、Macie は S3 バケットとオブジェクトに関する情報の取得および S3 バケット内のオブジェクトの取得、分析などのアクションを実行することが許可されます。ユーザーのアカウントが組織の Macie 管理者アカウントである場合、ポリシーにより Macie が組織のメンバーアカウントに対してユーザーに代わってこれらのアクションを実行することも許可されます。

S3 オブジェクトが暗号化されている場合、Macie サービスリンクロールのアクセス許可ポリシーは通常、オブジェクトの復号化に必要なアクセス許可を Macie に付与します。ただし、これは使用された暗号化のタイプによって異なります。それは、Macie が適切な暗号化キーの使用を許可されているかどうかによっても異なる可能性があります。

Amazon S3 オブジェクトの暗号化オプション

Amazon S3 は S3 オブジェクトの複数の暗号化オプションをサポートしています。これらのオプションのほとんどで、Amazon Macie は、ユーザーアカウントの Macie サービスリンクロールを使用してオブジェクトを復号化できます。ただし、これはオブジェクトの暗号化に使用された暗号化のタイプによって異なります。

Amazon S3 マネージドキーを用いたサーバー側の暗号化 (SSE-S3)

Amazon S3 マネージドキー (SSE-S3) を使用したサーバー側の暗号化を使用してオブジェクトが暗号化されている場合、Macie はオブジェクトを復号化できます。

このタイプの暗号化の詳細については、Amazon Simple Storage Service ユーザーガイドのAmazon S3 マネージドキーを用いたサーバー側の暗号化を使用を参照してください。

AWS KMS keys (DSSE-KMS および SSE-KMS) によるサーバー側の暗号化

AWS マネージド AWS KMS key (DSSE-KMS または SSE-KMS) による二層式サーバー側の暗号化またはサーバー側の暗号化を使用してオブジェクトが暗号化されている場合、Macie はオブジェクトを復号化できます。

カスタマー管理 AWS KMS key (DSSE-KMS または SSE-KMS) による二層式サーバー側の暗号化またはサーバー側の暗号化を使用してオブジェクトが暗号化されている場合、Macie がキー の使用を許可している場合にのみ、Macie はオブジェクトを復号化できます。これは、 AWS KMS 内で完全に管理される KMSキーと、外部キーストアにある KMS キーで暗号化されたオブジェクトに当てはまります。Macie が該当の KMS キー使用を許可されていない場合、Macie はオブジェクトのメタデータの保存およびレポートのみできます。

これらの暗号化タイプの詳細については、「Amazon Simple Storage Service ユーザーガイド」の「 での二層式サーバー側の暗号化AWS KMS keysの使用」および「 でのサーバー側の暗号化の使用AWS KMS keys」を参照してください。

ヒント

アカウントの S3 バケット内のオブジェクトを分析するために Macie がアクセス必要なすべてのカスタマーマネージド AWS KMS keys のリストを自動生成できます。これを行うには、 の Amazon Macie AWS KMS Scripts リポジトリから入手できる Permission Analyzer スクリプトを実行します GitHub。 Amazon Macie このスクリプトでは、AWS Command Line InterfaceAWS CLIコマンドの追加のスクリプトを生成することもできます。必要に応じてこれらのコマンドを実行し、指定した KMS キーに必要な設定設定とポリシーを更新できます。

顧客提供のキーを用いたサーバー側の暗号化 (SSE-C)

お客様が用意したキーによるサーバー側の暗号化 (SSE-C) を使用してオブジェクトが暗号化されている場合、Macie はオブジェクトを復号できません。Macie はオブジェクトのメタデータのみを保存およびレポートできます。

このタイプの暗号化の詳細については、Amazon Simple Storage Service ユーザーガイドのお客様が用意したキーによるサーバー側の暗号化の使用を参照してください。

クライアント側の暗号化

クライアント側の暗号化を使用してオブジェクトが暗号化されている場合、Macie はオブジェクトを復号化できません。Macie はオブジェクトのメタデータのみを保存およびレポートできます。たとえば、Macie はオブジェクトに関連付けられているオブジェクトとタグのサイズをレポートできます。

Amazon S3 のコンテキストでのこのタイプの暗号化詳細については、Amazon Simple Storage Service ユーザーガイドのクライアント側の暗号化を使用したデータの保護を参照してください。

Macie でバケットインベントリをフィルタリングして、特定のタイプの暗号化を使用するオブジェクトを保存する S3 バケットを判別できます。また、新しいオブジェクトを保存するときに、デフォルトで特定のタイプのサーバー側の暗号化を使用するバケットを判別することもできます。次の表は、バケットインベントリに適用してこの情報を検索できるフィルターの例を示しています。

...のバケットを表示するには ...でこのフィルターを適用
SSE-C 暗号化を使用するオブジェクトを保存する 暗号化によるオブジェクト数は顧客提供であり、From = 1
DSSE-KMS または SSE-KMS 暗号化を使用するオブジェクトを保存する 暗号化によるオブジェクト数はAWS KMS管理され、From = 1
SSE-S3 暗号化を使用するオブジェクトを保存する 暗号化によるオブジェクト数は Amazon S3 が管理し、From = 1 です。
クライアント側の暗号化を使用するオブジェクトを保存する (または暗号化されていない) 暗号化によるオブジェクトカウントは、暗号化なしおよび From = 1
DSSE-KMS 暗号化を使用してデフォルトで新しいオブジェクトを暗号化する デフォルトの暗号化 = aws:kms:dsse
SSE-KMS 暗号化を使用してデフォルトで新しいオブジェクトを暗号化する デフォルトの暗号化= aws:kms
SSE-S3 暗号化を使用してデフォルトで新しいオブジェクトを暗号化する デフォルトの暗号化= AES256

バケットが DSSE-KMS または SSE-KMS 暗号化を使用してデフォルトで新しいオブジェクトを暗号化するように設定されている場合は、どの AWS KMS key が使用されているかを判断することもできます。これを行うには、S3バケット ページでバケットを選択します。バケットの詳細パネルのサーバー側の暗号化 で、 AWS KMS keyフィールドを参照してください。このフィールドには、Amazon リソースネーム (ARN) またはキーの一意の識別子 (キー ID) が表示されます。

Amazon Macie にカスタマーマネージド AWS KMS key の使用を許可する

Amazon S3 オブジェクトが、カスタマー管理 AWS KMS key (DSSE-KMS または SSE-KMS) による二層式サーバー側の暗号化またはサーバー側の暗号化を使用して暗号化されている場合、Amazon Macie はキーの使用が許可されている場合にのみオブジェクトを復号化できます。このアクセスを提供する方法は、キーを所有するアカウントがオブジェクトを保存する S3 バケットも所有しているかどうかによって異なります。

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

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

このトピックでは、これらのタスクの実行方法を説明し、両方のシナリオの例を示します。カスタマー管理の へのアクセスの許可の詳細についてはAWS KMS keys、「 AWS Key Management Serviceデベロッパーガイド」の「 の認証とアクセスコントロールAWS KMS」を参照してください。

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

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

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

  • Principal 要素は、AWS KMS key と S3 バケットを所有するアカウント向け Macie サービスリンクロールの Amazon リソースネーム (ARN) を指定する必要があります。

    アカウントがオプトイン AWS リージョン 内にある場合、ARN にはリージョンの適切なリージョンコードも含める必要があります。たとえば、アカウントが、リージョンコード me-south-1 が設定されている中東 (バーレーン) リージョン内にある場合、Principal 要素は arn:aws:iam::123456789012:role/aws-service-role/macie.me-south-1.amazonaws.com/AWSServiceRoleForAmazonMacie を指定する必要があります。ここで、123456789012は、アカウントのアカウント ID です。Macie が現在利用可能なリージョンのリージョンコードのリストについては、「AWS 全般のリファレンス」の「Amazon Macie エンドポイントとクォータ」を参照してください。

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

AWS KMS key のポリシーに追加するステートメントの例を次に示します。

{ "Sid": "Allow the Macie service-linked role to use the key", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/aws-service-role/macie.amazonaws.com/AWSServiceRoleForAmazonMacie" }, "Action": [ "kms:Decrypt" ], "Resource": "*" }

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

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

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

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

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

1 つのアカウントが AWS KMS key を所有 (キー所有者) し、別のアカウントが S3 バケットを所有 (バケット所有者) している場合、キー所有者は KMS キーに対するクロスアカウントアクセスをバケット所有者に提供する必要があります。これを行うには、キー所有者はまず、キーのポリシーにより、バケット所有者がキーの使用とキーの付与の作成の両方を行うことを許可することを確認します。次に、バケット所有者はキーの付与を作成します。付与 は、ポリシーツールであり、付与によって指定された条件が満たされている場合、AWS プリンシパルに暗号化オペレーションで (KMS キー) の使用を許可します。この場合、許可は、関連する許可をバケット所有者のアカウントの Macie サービスリンクロールに委任します。

キーポリシーの更新の詳細な情報については、AWS Key Management Service デベロッパーガイドキーポリシーの変更を参照してください。付与の詳細については、AWS Key Management Service デベロッパーガイドのAWS KMS での付与を参照してください。

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

キーポリシーでは、キー所有者は、ポリシーに 2 つのステートメントが含まれていることを確認する必要があります:

  • 最初のステートメントは、バケット所有者がキーを使用してデータを復号することを許可します。

  • 2 番目のステートメントは、バケット所有者が自らの (当該バケット所有者の) アカウントの Macie サービスリンクロールの許可を作成することを許可します。

最初のステートメントでは、Principal 要素は、バケット所有者のアカウントの ARN を指定する必要があります。Action 配列は、kms:Decrypt アクションを指定する必要があります。これは、キーで暗号化されるオブジェクトを復号するために Macie が実行することを許可される必要がある唯一の AWS KMS アクションです。AWS KMS key のポリシーのこのステートメントの例を次に示します。

{ "Sid": "Allow account 111122223333 to use the key", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Action": [ "kms:Decrypt" ], "Resource": "*" }

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

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

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

キーポリシーの 2 番目のステートメントは、バケット所有者が自分のアカウントの Macie サービスにリンクされたロールの付与を作成することを許可します。このステートメントでは、Principal 要素は、バケットの所有者のアカウントの ARN を指定する必要があります。Action 配列は、kms:CreateGrant アクションを指定する必要があります。Condition 要素は、ステートメントで指定された kms:CreateGrant アクションへのアクセスをフィルタリングできます。AWS KMS key のポリシーのこのステートメントの例を次に示します。

{ "Sid": "Allow account 111122223333 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/aws-service-role/macie.amazonaws.com/AWSServiceRoleForAmazonMacie" } } }

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

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

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

  • Condition 要素は、StringEquals 条件演算子kms:GranteePrincipal 条件キーを使用して、ポリシーステートメントで指定されたアクションへのアクセスをフィルタリングします。この場合、バケット所有者は指定された GranteePrincipal のためのみ許可を作成できます。これは、これらのバケット所有者のアカウントの Macie サービスリンクロールの ARN です。そのARNでは、111122223333 はアカウント ID の例です。この値をバケット所有者のアカウントのアカウント ID に置き換えます。

    バケット所有者のアカウントがオプトイン AWS リージョン 内にある場合、Macie サービスリンクロールの ARN に適切なリージョンコードも含めます。たとえば、アカウントが、リージョンコード me-south-1 が設定されている中東 (バーレーン) リージョンにある場合は、ARN で macie.amazonaws.commacie.me-south-1.amazonaws.com と置き換えます。Macie が現在利用可能なリージョンのリージョンコードのリストについては、「AWS 全般のリファレンス」の「Amazon Macie エンドポイントとクォータ」を参照してください。

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

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

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

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

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

  • GranteePrincipal – アカウントの Macie サービスリンクロール (AWSServiceRoleForAmazonMacie) の ARN この値は arn:aws:iam::111122223333:role/aws-service-role/macie.amazonaws.com/AWSServiceRoleForAmazonMacie である必要があります。ここで、111122223333 は、バケット所有者のアカウントのアカウント ID です。

    アカウントがオプトインリージョン内にある場合、ARN には適切なリージョンコードを含める必要があります。例えば、アカウントが、リージョンコード me-south-1 が設定されている中東 (バーレーン) リージョン内にある場合、ARN は arn:aws:iam::111122223333:role/aws-service-role/macie.me-south-1.amazonaws.com/AWSServiceRoleForAmazonMacie である必要があります。ここで、111122223333 は、バケット所有者のアカウント ID です。

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

AWS Command Line Interface (AWS CLI) を使用してカスタマーマネージド KMS キー用の許可を作成するには、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/aws-service-role/macie.amazonaws.com/AWSServiceRoleForAmazonMacie ^ --operations "Decrypt"

コードの説明は以下のとおりです。

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

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

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

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

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

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