Amazon Macie で S3 バケットインベントリをフィルタリングする - Amazon Macie

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

Amazon Macie で S3 バケットインベントリをフィルタリングする

特定の特性を持つバケットを特定し、それに焦点を絞るには、Amazon Macie コンソールで、および Amazon Macie API を使用してプログラムで送信するクエリで S3 バケットインベントリをフィルタリングできます。フィルターを作成するときは、特定のバケット属性を使用して、ビューまたはクエリ結果からバケットを含めるか除外するための基準を定義します。バケット属性は、バケットの特定のメタデータを保存するフィールドです。

Macie では、フィルターは 1 つ以上の条件で設定されます。各条件は、基準とも呼ばれ、3 つの部分で設定されています。

  • バケット名タグキー、または ジョブで定義されているなどの、属性ベースのフィールド。

  • 演算子 (等しい等しくない など)。

  • 1 つまたは複数の値。値のタイプと数は、選択するフィールドと演算子によって異なります。

フィルター条件の定義および適用方法は、Amazon Macie コンソールと Amazon Macie API のどちらを使用するかによって異なります。

Amazon Macie コンソールでインベントリをフィルタリングする

Amazon Macie コンソールを使用して S3 バケットインベントリをフィルタリングする場合、Macie は個別の条件のフィールド、演算子、値を選択するのに役立つオプションを提供します。これらのオプションにアクセスするには、次のイメージに示すように、S3 バケットページのフィルターバーを使用します。


                S3 バケット ページのフィルターボックス。

フィルターボックスにカーソルを置くと、Macie はフィルター条件で使用できるフィールドのリストを表示します。フィールドは論理カテゴリ別に整理されています。たとえば、共通のフィールドカテゴリには S3 バケットに関する一般的な情報を格納するフィールドが含まれます。パブリックアクセスカテゴリには、バケットに適用できるさまざまなタイプのパブリックアクセス設定に関するデータを保存するフィールドが含まれます。フィールドは、各カテゴリ内でアルファベット順に並べ替えられます。

条件を追加するには、まずリストからフィールドを選択します。フィールドを見つけるには、完全なリストを参照するか、フィールド名の一部を入力してフィールドのリストを絞り込みます。

選択したフィールドに応じて、Macie は異なるオプションを表示します。オプションには、選択したフィールドのタイプと性質が反映されます。たとえば、ジョブで定義されているフィールドを選択した場合、Macie は選択する値のリストを表示します。バケット名フィールドを選択した場合、Macie は、バケット名を入力できるテキストボックスを表示します。どのフィールドを選択しても、Macie はフィールドに必要な設定を含む条件を追加するステップを順を追ってガイドします。

条件を追加すると、次の図に示すように、Macie はその条件の基準を適用し、フィルターボックスの下のフィルタートークンに条件を表示します。


                条件のフィルタートークンが入ったフィルターボックス。

この例では、パブリックアクセス可能なすべてのバケットが含まれ、他のすべてのバケットを除外するように条件が設定されています。有効なアクセス許可フィールドの値 と等しい パブリックの場合、バケットが返されます。

条件を追加すると、Macie はその基準を適用し、それらをフィルターボックスの下に表示します。複数の条件を追加する場合、Macie は AND ロジックを使用して条件を結合し、フィルター基準を評価します。これは、バケットは、すべてのフィルター内の条件に一致した場合にのみ、フィルター基準を満たすことを意味します。フィルターボックスの下の領域をいつでも参照して、適用した基準を確認できます。

コンソールを使用してインベントリをフィルタリングするには
  1. Amazon Macie コンソール (https://console.aws.amazon.com/macie/) を開きます。

  2. ナビゲーションペインで、S3 バケットを選択します。S3 バケットページにはバケットインベントリが表示されます。

  3. ページの上部で、必要に応じて、更新 The refresh button, which is a button that contains an empty, dark gray circle with an arrow を選択して、Amazon S3 から最新のバケットメタデータを取得します。

  4. フィルターボックスにカーソルを置き、条件に使用するフィールドを選択します。

  5. 次のヒントを念頭に置いて、フィールドに適切な値のタイプを選択または入力します。

    日付、時刻、および時間範囲

    日付と時刻では、From および To ボックスを使用して、包括的な時間範囲を定義します。

    • 固定時間範囲を定義するには、From および To ボックスを使用して、範囲内の最初の日時と最後の日時をそれぞれ指定します。

    • 特定の日時に開始し、現在の時刻で終了する相対時間範囲を定義するには、開始日時を From ボックスに入力し、To ボックス内のテキストを削除します。

    • 特定の日時に終了する相対時間範囲を定義するには、終了日時を To ボックスに入力し、From ボックス内のテキストを削除します。

    時間値は 24 時間表記を使用することに注意してください。日付ピッカーを使用して日付を選択する場合は、テキストをFrom および To ボックスに直接入力して、値を絞り込むことができます。

    数値および数値範囲

    数値では、FromTo ボックスを使用して、包括的な数値範囲を定義する整数を入力します。

    • 固定数値範囲を定義するには、FromTo ボックスを使用して、範囲内の最小と最大の数値をそれぞれ指定します。

    • 1 つの特定の値に制限される固定数値範囲を定義するには、FromTo 両方のボックスに値を入力します。たとえば、15 個のオブジェクトを含む S3 バケットのみを含めるには、FromTo ボックスに 15 と入力します。

    • 特定の数値で始まる相対数値範囲を定義するには、From ボックスに数値を入力し、To ボックスにテキストは入力しないでください。

    • 特定の数値で終わる相対数値範囲を定義するには、To ボックスに数値を入力し、From ボックスにテキストは入力しないでください。

    テキスト (文字列) 値

    このタイプの値では、フィールドに完全で有効な値を入力します。値は大文字と小文字が区別されます。

    このタイプの値では、部分的な値またはワイルドカード文字を使用することはできないことに注意してください。唯一の例外は バケット名フィールドです。そのフィールドでは、完全なバケット名の代わりにプレフィックスを指定できます。たとえば、名前が my-S3 で始まるすべての S3 バケットを見つけるには、バケット名 フィールドのフィルター値として my-S3 と入力します。My-s3my* などの他の値を入力した場合、Macie はバケットを返しません。

  6. フィールドの値の追加が終了したら、適用を選択します。Macie はフィルター基準を適用し、フィルターボックスの下のフィルタートークンに条件を表示します。

  7. 追加する追加の条件ごとに、ステップ 4~6 を繰り返します。

  8. 条件を削除するには、条件のフィルタートークンの X を選択します。

  9. 条件を変更するには、条件のフィルタートークンの X を選択して条件を削除します。次に、ステップ 4~6 を繰り返して、正しい設定を持つ条件を追加します。

Amazon Macie API を用いてインベントリをプログラムでフィルタリングする

S3 バケットインベントリをプログラムでフィルタリングするには、Amazon Macie APIの DescribeBuckets オペレーションを使用して、送信するクエリでフィルター基準を指定します。このオペレーションは、オブジェクトの配列を返します。各オブジェクトには、フィルター基準と一致するバケットに関する統計データおよびその他の情報が含まれます。

クエリでフィルター基準を指定するには、リクエストにフィルター基準のマップを含めます。条件ごとに、フィールド、演算子、およびフィールドの 1 つ以上の値を指定します。値のタイプと数は、選択するフィールドと演算子によって異なります。条件で使用できるフィールド、演算子、および値のタイプについては、Amazon Macie API リファレンスのAmazon S3 データソースを参照してください。

次の例は、AWS Command Line InterfaceAWS CLI を使用して送信するクエリでフィルター基準を指定する方法を示しています。HTTPS リクエストを Macie に直接送信するか、現在のバージョンの別の AWS コマンドラインツールまたは AWS SDKを使用してこれを行うこともできます。AWS のツールと SDK に関する詳細については、AWS での構築ツールを参照してください。

この例では、describe-buckets コマンドを使用します。例が正常に実行されると、Macie は buckets 配列を返します。配列は、現在の AWS リージョン にある各バケットのオブジェクトを含み、フィルター基準と一致しています。この出力の例では、以下のセクションを展開します。

この例では、buckets 配列は、クエリで指定されたフィルター基準と一致する 2 つのバケットの詳細を提供します。

{ "buckets": [ { "accountId": "123456789012", "allowsUnencryptedObjectUploads": "FALSE", "bucketArn": "arn:aws:s3:::DOC-EXAMPLE-BUCKET1", "bucketCreatedAt": "2020-05-18T19:54:00+00:00", "bucketName": "DOC-EXAMPLE-BUCKET1", "classifiableObjectCount": 13, "classifiableSizeInBytes": 1592088, "jobDetails": { "isDefinedInJob": "TRUE", "isMonitoredByJob": "TRUE", "lastJobId": "08c81dc4a2f3377fae45c9ddaexample", "lastJobRunTime": "2021-04-26T14:55:30.270000+00:00" }, "lastAutomatedDiscoveryTime": "2022-12-10T19:11:25.364000+00:00", "lastUpdated": "2022-12-13T07:33:06.337000+00:00", "objectCount": 13, "objectCountByEncryptionType": { "customerManaged": 0, "kmsManaged": 2, "s3Managed": 7, "unencrypted": 4, "unknown": 0 }, "publicAccess": { "effectivePermission": "NOT_PUBLIC", "permissionConfiguration": { "accountLevelPermissions": { "blockPublicAccess": { "blockPublicAcls": true, "blockPublicPolicy": true, "ignorePublicAcls": true, "restrictPublicBuckets": true } }, "bucketLevelPermissions": { "accessControlList": { "allowsPublicReadAccess": false, "allowsPublicWriteAccess": false }, "blockPublicAccess": { "blockPublicAcls": true, "blockPublicPolicy": true, "ignorePublicAcls": true, "restrictPublicBuckets": true }, "bucketPolicy": { "allowsPublicReadAccess": false, "allowsPublicWriteAccess": false } } } }, "region": "us-east-1", "replicationDetails": { "replicated": false, "replicatedExternally": false, "replicationAccounts": [] }, "sensitivityScore": 78, "serverSideEncryption": { "kmsMasterKeyId": null, "type": "NONE" }, "sharedAccess": "NOT_SHARED", "sizeInBytes": 4549746, "sizeInBytesCompressed": 0, "tags": [ { "key": "Division", "value": "HR" }, { "key": "Team", "value": "Recruiting" } ], "unclassifiableObjectCount": { "fileType": 0, "storageClass": 0, "total": 0 }, "unclassifiableObjectSizeInBytes": { "fileType": 0, "storageClass": 0, "total": 0 }, "versioning": true }, { "accountId": "123456789012", "allowsUnencryptedObjectUploads": "TRUE", "bucketArn": "arn:aws:s3:::DOC-EXAMPLE-BUCKET2", "bucketCreatedAt": "2020-11-25T18:24:38+00:00", "bucketName": "DOC-EXAMPLE-BUCKET2", "classifiableObjectCount": 8, "classifiableSizeInBytes": 133810, "jobDetails": { "isDefinedInJob": "TRUE", "isMonitoredByJob": "FALSE", "lastJobId": "188d4f6044d621771ef7d65f2example", "lastJobRunTime": "2021-04-09T19:37:11.511000+00:00" }, "lastAutomatedDiscoveryTime": "2022-12-12T19:11:25.364000+00:00", "lastUpdated": "2022-12-13T07:33:06.337000+00:00", "objectCount": 8, "objectCountByEncryptionType": { "customerManaged": 0, "kmsManaged": 0, "s3Managed": 8, "unencrypted": 0, "unknown": 0 }, "publicAccess": { "effectivePermission": "NOT_PUBLIC", "permissionConfiguration": { "accountLevelPermissions": { "blockPublicAccess": { "blockPublicAcls": true, "blockPublicPolicy": true, "ignorePublicAcls": true, "restrictPublicBuckets": true } }, "bucketLevelPermissions": { "accessControlList": { "allowsPublicReadAccess": false, "allowsPublicWriteAccess": false }, "blockPublicAccess": { "blockPublicAcls": true, "blockPublicPolicy": true, "ignorePublicAcls": true, "restrictPublicBuckets": true }, "bucketPolicy": { "allowsPublicReadAccess": false, "allowsPublicWriteAccess": false } } } }, "region": "us-east-1", "replicationDetails": { "replicated": false, "replicatedExternally": false, "replicationAccounts": [] }, "sensitivityScore": 95, "serverSideEncryption": { "kmsMasterKeyId": null, "type": "AES256" }, "sharedAccess": "EXTERNAL", "sizeInBytes": 175978, "sizeInBytesCompressed": 0, "tags": [ { "key": "Division", "value": "HR" }, { "key": "Team", "value": "Recruiting" } ], "unclassifiableObjectCount": { "fileType": 3, "storageClass": 0, "total": 3 }, "unclassifiableObjectSizeInBytes": { "fileType": 2999826, "storageClass": 0, "total": 2999826 }, "versioning": true } ] }

フィルター基準と一致するバケットがない場合、Macie は空の buckets 配列を返します。

{ "buckets": [] }

例 1: バケット名でバケットを見つける

この例では、describe-buckets コマンドを使用して、名前が my-S3 で始まり、現在の AWS リージョン にあるすべてのバケットのメタデータをクエリします。

Linux、macOS、Unix の場合:

$ aws macie2 describe-buckets --criteria '{"bucketName":{"prefix":"my-S3"}}'

Microsoft Windows の場合:

C:\> aws macie2 describe-buckets --criteria={\"bucketName\":{\"prefix\":\"my-S3\"}}

ここで、

  • bucketNameバケット名フィールドの JSON 名を指定します。

  • prefixprefix 演算子を指定します。

  • my-S3バケット名 (バケット名) フィールドの値です。

例 2: パブリックアクセス可能なバケットを見つける

この例では、describe-buckets コマンドを使用して、現在の AWS リージョン にあり、アクセス許可設定の組み合わせに基づいて、パブリックアクセス可能なバケットのメタデータをクエリします。

Linux、macOS、Unix の場合:

$ aws macie2 describe-buckets --criteria '{"publicAccess.effectivePermission":{"eq":["PUBLIC"]}}'

Microsoft Windows の場合:

C:\> aws macie2 describe-buckets --criteria={\"publicAccess.effectivePermission\":{\"eq\":[\"PUBLIC\"]}}

ここで、

  • publicAccess.effectivePermission有効なアクセス許可フィールドの JSON 名を指定します。

  • eqは、等しい 演算子を指定します。

  • PUBLIC有効なアクセス許可フィールドの列挙値です。

例 3: 暗号化されていないオブジェクトを含むバケットを見つける

この例では、describe-buckets コマンドを使用して、現在の AWS リージョン にあり、暗号化されていないオブジェクトを含むバケットのメタデータをクエリします。

Linux、macOS、Unix の場合:

$ aws macie2 describe-buckets --criteria '{"objectCountByEncryptionType.unencrypted":{"gte":1}}'

Microsoft Windows の場合:

C:\> aws macie2 describe-buckets --criteria={\"objectCountByEncryptionType.unencrypted\":{\"gte\":1}}

ここで、

  • objectCountByEncryptionType.unencrypted暗号化なしフィールドの JSON 名を指定します。

  • gteは、~以上演算子を指定します。

  • 1 は、暗号化なしフィールドの包括的で相対的な数値範囲内の最小値です。

例 4: ジョブによってモニタリングされていないバケットを見つける

この例では、describe-buckets コマンドを使用して、現在の AWS リージョン にあり、定期的な機密データ検出ジョブに関連付けられていないバケットのメタデータをクエリします。

Linux、macOS、Unix の場合:

$ aws macie2 describe-buckets --criteria '{"jobDetails.isMonitoredByJob":{"eq":["FALSE"]}}'

Microsoft Windows の場合:

C:\> aws macie2 describe-buckets --criteria={\"jobDetails.isMonitoredByJob\":{\"eq\":[\"FALSE\"]}}

ここで、

  • jobDetails.isMonitoredByJobジョブによって積極的にモニタリングされているフィールドの JSON 名を指定します。

  • eqは、等しい 演算子を指定します。

  • FALSEジョブによって積極的にモニタリングされているフィールドの列挙値です。

例 5: 外部アカウントにデータをレプリケートするバケットを見つける

この例では、describe-buckets コマンドを使用して、現在の AWS リージョン にあり、組織の一部ではない AWS アカウント にオブジェクトをレプリケートするように設定されているバケットのメタデータをクエリします。

Linux、macOS、Unix の場合:

$ aws macie2 describe-buckets --criteria '{"replicationDetails.replicatedExternally":{"eq":["true"]}}'

Microsoft Windows の場合:

C:\> aws macie2 describe-buckets --criteria={\"replicationDetails.replicatedExternally\":{\"eq\":[\"true\"]}}

ここで、

  • replicationDetails.replicatedExternallyReplicated externally (外部でレプリケートされた) フィールドの JSON 名を指定します。

  • eqは、と等しい 演算子を指定します。

  • true外部でレプリケートされたフィールドのブール値を指定します。

例 6: 複数の基準に基づいてバケットを見つける

この例では、describe-buckets コマンドを使用して、現在の AWS リージョン にあり、以下の基準と一致するバケットのメタデータをクエリします: アクセス許可設定の組み合わせに基づいて、パブリックアクセス可能である; 暗号化されていないオブジェクトを含む; および、定期的な機密データ検出ジョブに関連付けられていない。

Linux、macOS、または Unix の場合、読みやすさを向上させるためにバックスラッシュ (\) の行連結文字を使用します。

$ aws macie2 describe-buckets \ --criteria '{"publicAccess.effectivePermission":{"eq":["PUBLIC"]},"objectCountByEncryptionType.unencrypted":{"gte":1},"jobDetails.isMonitoredByJob":{"eq":["FALSE"]}}'

Microsoft Windows の場合、読みやすさを向上させるためにキャレット (^) の行連結文字を使用します。

C:\> aws macie2 describe-buckets ^ --criteria={\"publicAccess.effectivePermission\":{\"eq\":[\"PUBLIC\"]},\"objectCountByEncryptionType.unencrypted\":{\"gte\":1},\"jobDetails.isMonitoredByJob\":{\"eq\":[\"FALSE\"]}}

ここで、

  • publicAccess.effectivePermission有効なアクセス許可フィールドの JSON 名を指定し、

    • eqは、と等しい 演算子を指定します。

    • PUBLIC有効なアクセス許可フィールドの列挙値です。

  • objectCountByEncryptionType.unencrypted暗号化なしフィールドの JSON 名を指定し、

    • gteは、~以上演算子を指定します。

    • 1 は、暗号化なしフィールドの包括的で相対的な数値範囲内の最小値です。

  • jobDetails.isMonitoredByJobジョブによって積極的にモニタリングされているフィールドの JSON 名を指定し、

    • eqは、と等しい 演算子を指定します。

    • FALSEジョブによって積極的にモニタリングされているフィールドの列挙値です。