使用 Amazon Macie 筛选您的 S3 存储桶清单 - Amazon Macie

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Amazon Macie 筛选您的 S3 存储桶清单

要识别并关注具有特定特征的存储桶,您可以在 Amazon Macie 控制台和使用 Amazon Macie API 以编程方式提交的查询中筛选您的 S3 存储桶清单。创建筛选条件时,您可以使用特定的存储桶属性来定义在视图或查询结果中包含或排除存储桶的标准。存储桶属性是存储存储桶特定元数据的字段。

Macie 中的筛选条件包含一个或多个条件。每个条件,也称为标准,由三个部分组成:

  • 基于属性的字段,例如存储桶名称标签键在作业中定义

  • 一个运算符,例如等于不等于

  • 一个或多个值。值的类型和数量取决于您选择的字段和运算符。

如何定义和应用筛选条件取决于您使用的是 Amazon Macie 主机还是 Amazon Macie API。

在 Amazon Macie 主机上筛选您的库存

如果您使用 Amazon Macie 控制台筛选 S3 存储桶清单,Macie 会提供一些选项来帮助您为各个条件选择字段、运算符和值。您可以使用 S3 存储桶页面上的筛选框访问这些选项,如下图中所示。

S3 存储桶页面的筛选框。

当您将光标置于筛选条件框中时,Macie 会显示可在筛选条件中使用的字段列表。这些字段按逻辑类别组织。例如,常用字段类别包括存储有关 S3 存储桶的一般信息的字段。公共访问类别包括存储有关可应用于存储桶的各种类型的公共访问权限设置数据的字段。这些字段在每个类别中按字母顺序排序。

要添加条件,请先从列表中选择一个字段。要查找字段,请浏览完整列表,或输入部分字段名称以缩小字段列表范围。

根据您选择的字段,Macie 显示不同的选项。这些选项反映了您选择的字段的类型和性质。例如,如果您选择共享访问权限字段,Macie 会显示一个值列表供您选择。如果您选择存储桶名称字段,Macie 会显示一个文本框,您可以在其中输入 S3 存储桶的名称。无论您选择哪个字段,Macie 都会指导您完成添加包含该字段所需设置的条件的步骤。

添加条件后,Macie 会为该条件应用标准,并在筛选框下方的筛选条件令牌中显示该条件,如下图所示。

带有条件筛选令牌的筛选条件框。

在此示例中,条件配置为包括所有可公开访问的存储桶,并排除所有其他存储桶。它返回有效权限字段的值等于 Public 的存储桶。

当您添加更多条件时,Macie 会应用其标准并将其显示在筛选框下方。如果您添加多个条件,Macie 会使用 AND 逻辑来连接条件并评测筛选标准。这意味着,只有当 S3 存储桶与筛选条件中的所有条件都匹配时,它才会匹配筛选标准。您可以随时参考筛选框下方的区域,以确定您应用了哪些标准。

使用控制台筛选清单
  1. 通过以下网址打开 Amazon Macie 控制台:https://console.aws.amazon.com/macie/

  2. 在导航窗格中,选择 S3 存储桶S3 存储桶页面显示您的存储桶清单。

    如果启用了自动敏感数据发现,则默认视图不会显示当前不在自动发现范围内的存储桶的数据。如果您是组织的 Macie 管理员,它也不会显示当前已禁用自动发现功能的帐户的数据。要显示此数据,请在筛选框下方的 “由自动发现筛选器监控” 标记中选择 X

  3. 在页面顶部,可以选择刷新 ( The refresh button, which is a button that contains an empty, dark gray circle with an arrow ),从 Amazon S3 检索最新的存储桶元数据。

  4. 将光标置于筛选框中,然后选择要用于条件的字段。

  5. 请记住以下提示,为该字段选择或输入适当的值类型。

    日期、时间和时间范围

    对于日期和时间,使用框定义包含的时间范围:

    • 要定义固定的时间范围,请使用框分别指定该范围内的第一个日期和时间以及最后一个日期和时间。

    • 要定义从特定日期和时间开始并在当前时间结束的相对时间范围,请在框中输入开始日期和时间,然后删除框中的任何文本。

    • 要定义在特定日期和时间结束的相对时间范围,请在框中输入结束日期和时间,然后删除框中的任何文本。

    请注意,时间值使用 24 小时表示法。如果您使用日期选择器选择日期,则可以通过直接在框中输入文本来细化值。

    数字和数值范围

    对于数值,使用框输入定义包含数值范围的整数:

    • 要定义固定的数值范围,请使用框分别指定该范围内的最小和最高数字。

    • 要定义仅限于一个特定值的固定数值范围,请在框中输入该值。例如,要仅包含那些恰好存储 15 个对象的 S3 存储桶,请在 “” 和 “” 框15中输入。

    • 要定义从某个数字开始的相对数值范围,请在框中输入数字,不要在框中输入任何文本。

    • 要定义以特定数字结尾的相对数值范围,请在框中输入数字,不要在框中输入任何文本。

    文本(字符串)值

    对于此类值,请为该字段输入一个完整、有效的值。值区分大小写。

    请注意,您不能在此类型的值中使用部分值或通配符。唯一的例外是存储桶名称字段。对于该字段,您可以指定前缀而不是完整的存储桶名称。例如,要查找名称以 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操作提交的查询中指定筛选标准。此操作返回对象数组。每个对象都包含与筛选标准相匹配的存储桶的统计数据和其他信息。

要在查询中指定筛选标准,请在请求中加入筛选条件地图。为每个条件指定一个字段、一个运算符以及该字段的一个或多个值。值的类型和数量取决于您选择的字段和运算符。有关可在条件中使用的字段、运算符和值类型的信息,请参阅 Amazon Macie API 参考中的 Amazon S3 数据来源

以下示例向您展示了如何在使用 AWS Command Line Interface (AWS CLI) 提交的查询中指定筛选标准。您也可以使用其他 AWS 命令行工具或 AWS SDK 的当前版本,或者直接向 Macie 发送 HTTPS 请求来执行此操作。有关 AWS 工具和 SDK 的信息,请参阅构建工具。 AWS

这些示例使用 describe-buckets 命令。如果示例成功运行,Macie 将返回一个 buckets 数组。该数组包含当前存储桶中 AWS 区域 且符合筛选条件的每个存储桶的对象。有关此输出的示例,请展开以下部分。

在此示例中,buckets 数组提供了与查询中指定的筛选条件相匹配的两个存储桶的详细信息。

{ "buckets": [ { "accountId": "123456789012", "allowsUnencryptedObjectUploads": "FALSE", "automatedDiscoveryMonitoringStatus": "MONITORED", "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": "2024-05-26T14:55:30.270000+00:00" }, "lastAutomatedDiscoveryTime": "2024-06-07T19:11:25.364000+00:00", "lastUpdated": "2024-06-12T07: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", "automatedDiscoveryMonitoringStatus": "MONITORED", "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": "2024-04-09T19:37:11.511000+00:00" }, "lastAutomatedDiscoveryTime": "2024-06-07T19:11:25.364000+00:00", "lastUpdated": "2024-06-12T07: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:按存储桶名称查找存储桶

此示例使用 desc ribe-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 名称。

  • prefix 指定前缀运算符。

  • my-S3存储桶名称字段的值。

示例 2:查找可公开访问的存储桶

此示例使用 desc ribe-buck ets 命令查询当前存储桶的元数据 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:查找存储未加密对象的存储桶

此示例使用 desc ribe-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.uncrypted 指定 “不加” 字段的 JSON 名称。

  • gte 指定大于或等于运算符。

  • 1不加密字段在包含性相对数值范围内的最低值。

示例 4:查找未受任务监控的存储桶

此示例使用 desc ribe-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\"]}}

其中:

  • 职位详情。 isMonitoredByJob 指定 “由任务主动监控” 字段的 JSON 名称。

  • eq 指定等于运算符。

  • FALSE受任务主动监控字段的枚举值。

示例 5:查找将数据复制到外部账户的存储桶

此示例使用 desc ribe-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.replicatedExternally 指定外部复制字段的 JSON 名称。

  • eq 指定等于运算符。

  • true外部复制字段指定布尔值。

示例 6:根据多个条件查找存储桶

此示例使用 desc ribe-buck ets 命令查询当前 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.uncrypted 指定 “不加密” 字段的 JSON 名称,并且:

    • gte 指定大于或等于运算符。

    • 1不加密字段在包含性相对数值范围内的最低值。

  • 职位详情。 isMonitoredByJob 指定 “由任务主动监控” 字段的 JSON 名称,以及:

    • eq 指定等于运算符。

    • FALSE受任务主动监控字段的枚举值。