本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
用于报告敏感数据位置的架构
Amazon Macie 使用标准化JSON结构来存储有关其在亚马逊简单存储服务 (Amazon S3) 对象中发现敏感数据的位置。这些结构用于敏感数据调查发现和敏感数据发现结果。对于敏感数据发现,这些结构是查找结果JSON架构的一部分。要查看完整的调查结果JSON架构,请参阅 Amazon Macie API 参考中的调查结果。要了解有关敏感数据发现结果的更多信息,请参阅 存储和保留敏感数据发现结果。
架构概览
要报告 Amazon Macie 在受影响的 S3 对象中发现的敏感数据的位置,敏感数据发现和敏感数据发现结果的JSON架构包括一个customDataIdentifiers
对象和一个sensitiveData
对象。该 customDataIdentifiers
对象提供有关 Macie 使用自定义数据标识符检测到的数据的详细信息。该 sensitiveData
对象提供有关 Macie 使用托管数据标识符检测到的数据的详细信息。
每个 customDataIdentifiers
和 sensitiveData
对象都包含一个或多个 detections
数组:
-
在
customDataIdentifiers
对象中,detections
数组表示哪些自定义数据标识符检测到数据并得出了调查发现。对于每个自定义数据标识符,该数组还会指示该标识符检测到的数据出现次数。它还可以指示标识符检测到的数据的位置。 -
在
sensitiveData
对象中,detections
数组指示 Macie 使用托管数据标识符检测到的敏感数据的类型。对于每种类型的敏感数据,该数组还会指示数据的出现次数,还可以指示数据的位置。
对于敏感数据调查发现,detections
数组可以包含 1-15 个 occurrences
对象。每个 occurrences
对象都指定 Macie 在何处检测到特定类型的敏感数据的单个事件。
例如,以下detections
数组表示 Macie 在文件中发现的三次敏感数据(美国社会安全号码)的位置。CSV
"sensitiveData": [
{
"category": "PERSONAL_INFORMATION",
"detections": [
{
"count": 30,
"occurrences": {
"cells": [
{
"cellReference": null,
"column": 1,
"columnName": "SSN",
"row": 2
},
{
"cellReference": null,
"column": 1,
"columnName": "SSN",
"row": 3
},
{
"cellReference": null,
"column": 1,
"columnName": "SSN",
"row": 4
}
]
},
"type": "USA_SOCIAL_SECURITY_NUMBER"
}
detections
数组中 occurrences
对象的位置和数量因 Macie 在自动敏感数据发现分析周期或敏感数据发现作业运行期间检测到的敏感数据的类别、类型和出现次数而异。对于每个分析周期或作业运行,Macie 都使用深度优先搜索算法,使用 Macie 在 S3 对象中检测到的 1-15 次敏感数据的位置数据填充结果调查发现。这些事件表明受影响的 S3 存储桶和对象可能包含的敏感数据的类别和类型。
occurrences
对象可以包含以下任何结构,具体取决于受影响的 S3 对象的文件类型或存储格式:
-
cells
数组 — 此数组适用于 Microsoft Excel 工作簿、CSV文件和TSV文件。此数组中的对象指定 Macie 检测到其中存在敏感数据的单元格或字段。 -
lineRanges
array — 此数组适用于电子邮件 (EML) 文件以及除、CSVJSON、JSON行和文件之外的非二进制文本文件,TSV例如HTMLTXT、和文件。XML此数组中的对象指定 Macie 检测到存在敏感数据的一行或包含范围的行,以及数据在指定行上的位置。在某些情况下,
lineRanges
数组中的对象以另一种类型的数组支持的文件类型或存储格式指定敏感数据检测的位置。这些情况是:在其他结构化文件的非结构化部分中检测到,例如文件中的注释;在格式错误的文件中检测到,Macie 将其分析为纯文本;以及具有一个或多个列名的CSV或TSV文件,Macie 在其中检测到敏感数据。 -
offsetRanges
数组 – 此数组保留供将来使用。如果存在此数组,则其值为空。 -
pages
数组-此数组适用于 Adobe 便携式文档格式 (PDF) 文件。此数组中的对象指定 Macie 检测到其中存在敏感数据的页面。 -
records
数组 — 此数组适用于 Apache Avro 对象容器、Apache Parquet 文件、文件和 JSON JSON Lines 文件。对于 Avro 对象容器和 Parquet 文件,此数组中的对象指定记录索引和 Macie 检测到存在敏感数据的记录中字段的路径。对于JSON和 L JSON ines 文件,此数组中的对象指定 Macie 检测到其中存在敏感数据的字段或数组的路径。对于 Lin JSON es 文件,它还指定包含数据的行的索引。
这些数组的内容因受影响的 S3 对象的文件类型或存储格式及其内容而异。
架构详细信息和示例
Amazon Macie 会量身定制其使用的JSON结构内容,以指示在特定类型的文件和内容中检测到敏感数据的位置。以下主题解释并提供了这些结构的示例。
有关敏感数据发现中可以包含的JSON结构的完整列表,请参阅 Amazon Macie API 参考中的调查结果。
Cells 数组
适用于:微软 Excel 工作簿、CSV文件和TSV文件
在 cells
数组中,Cell
对象指定 Macie 检测到其中存在敏感数据的单元格或字段。下表描述了 Cell
对象中每个字段的用途。
字段 | 类型 | 描述 |
---|---|---|
cellReference |
String | 包含该事件的单元格的位置,作为绝对单元格引用。此字段仅适用于 Excel 工作簿。对于CSV和TSV文件,此值为空。 |
column |
整数 | 包含该事件的列的列编号。对于 Excel 工作簿,此值与列标识符的字母字符相关联,例如,1 用于 A 列,2 用于 B 列,依此类推。 |
columnName |
String | 包含该事件的列名称(如果有)。 |
row |
整数 | 包含该事件的行的行号。 |
以下示例显示了一个Cell
对象的结构,该对象指定 Macie 在CSV文件中检测到的敏感数据出现的位置。
"cells": [
{
"cellReference": null,
"column": 3,
"columnName": "SSN",
"row": 5
}
]
在前面的示例中,发现结果表明 Macie 在文件第三列(已命名 SSN)第五行的字段中检测到敏感数据。
以下示例显示了一个 Cell
对象的结构,该对象指定 Macie 在 Excel 工作簿中检测到的敏感数据出现的位置。
"cells": [
{
"cellReference": "Sheet2!C5",
"column": 3,
"columnName": "SSN",
"row": 5
}
]
在前面的示例中,调查发现表明 Macie 在工作簿中名为 Sheet2 的工作表中检测到了敏感数据。在该工作表中,Macie 在第三列(名为 C 列 SSN)第五行的单元格中检测到敏感数据。
LineRanges数组
适用于:电子邮件 (EML) 文件以及除、、JSON行和文件之外的CSV非二进制文本文件,TSV例如、HTML、TXT和文件 JSON XML
在 lineRanges
数组中,Range
对象指定 Macie 检测到存在敏感数据的一行或包含范围的行,以及数据在指定行上的位置。
对于 occurrences
对象中其他类型的数组支持的文件类型,此对象通常为空。例外情况是:
-
其他结构化文件的非结构化部分中的数据,例如文件中的注释。
-
格式错误的文件中的数据,Macie 将其分析为纯文本。
-
一个CSV或TSV文件,其中包含一个或多个列名,Macie 在其中检测到敏感数据。
下表描述了 lineRanges
数组的 Range
对象中每个字段的用途。
字段 | 类型 | 描述 |
---|---|---|
end |
整数 | 从文件开头到事件结尾的行数。 |
start |
整数 | 从文件开头到事件开头的行数。 |
startColumn |
整数 | 从包含事件的内容的第一行开头(start )到事件开头的字符数,包括空格并从 1 开始计数。 |
以下示例显示了一个Range
对象的结构,该对象指定 Macie 在TXT文件中的单行上检测到的敏感数据出现的位置。
"lineRanges": [
{
"end": 1,
"start": 1,
"startColumn": 119
}
]
在前面的示例中,调查发现表明 Macie 检测到文件的第一行中完全出现了敏感数据(邮寄地址)。出现的第一个字符是从该行开头开始的 119 个字符(含空格)。
以下示例显示了一个Range
对象的结构,该对象指定了跨越TXT文件中多行的敏感数据出现的位置。
"lineRanges": [
{
"end": 54,
"start": 51,
"startColumn": 1
}
]
在前面的示例中,调查发现表明 Macie 检测到存在跨越文件第 51 行到第 54 行的敏感数据(邮寄地址)。事件的第一个字符是文件第 51 行的第一个字符。
Page 数组
适用于:Adobe 便携式文档格式 (PDF) 文件
在 pages
数组中,Page
对象指定 Macie 检测到其中存在敏感数据的页面。对象包含一个 pageNumber
字段。该 pageNumber
字段存储一个整数,用于指定包含该事件的页面的页码。
以下示例显示了一个Page
对象的结构,该对象指定 Macie 在PDF文件中检测到的敏感数据出现的位置。
"pages": [
{
"pageNumber": 10
}
]
在前面的示例中,调查发现表明该文件的第 10 页包含该事件。
记录数组
适用于:Apache Avro 对象容器、Apache Parquet 文件、文件和 JSON Lines 文件 JSON
对于 Avro 对象容器或 Parquet 文件,records
数组中的 Record
对象指定记录索引和 Macie 检测到存在敏感数据的记录中字段的路径。对于JSON和 Lin JSON es 文件,Record
对象指定 Macie 检测到其中存在敏感数据的字段或数组的路径。对于 Lin JSON es 文件,它还指定包含具体值的行的索引。
下表描述了 Record
对象中每个字段的用途。
字段 | 类型 | 描述 |
---|---|---|
jsonPath |
String |
以JSONPath表达式的形式指向具体值的路径。 对于 Avro 对象容器或 Parquet 文件,这是记录 ( 如果 Macie 在路径中任何元素的名称中检测到敏感数据,则 Macie 会从 |
recordIndex |
整数 | 对于 Avro 对象容器或 Parquet 文件,包含该事件的记录的索引,从 0 开始。对于 Lin JSON es 文件,从0开始的行索引,表示包含具体值的行。此值始终0 适用于JSON文件。 |
以下示例显示了一个 Record
对象的结构,该对象指定 Macie 在 Parquet 文件中检测到的敏感数据出现的位置。
"records": [
{
"jsonPath": "$['abcdefghijklmnopqrstuvwxyz']",
"recordIndex": 7663
}
]
在前面的示例中,调查发现表明 Macie 在索引 7663(记录号 7664)的记录中检测到了敏感数据。在该记录中,Macie 在名为 abcdefghijklmnopqrstuvwxyz
的字段中检测到了敏感数据。记录中该字段的完整JSON路径是$.abcdefghijklmnopqrstuvwxyz
。该字段是根(外层级别)对象的直接后代。
以下示例还显示了 Macie 在 Parquet 文件中检测到的敏感数据出现时的 Record
对象结构。但是,在此示例中,Macie 截断了包含该匹配项的字段的名称,因为该名称超出了字符限制。
"records": [
{
"jsonPath": "$['...uvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz']",
"recordIndex": 7663
}
]
在前面的示例中,该字段是根(外层级别)对象的直接后代。
在以下示例中,同样对于 Macie 在 Parquet 文件中检测到的敏感数据,Macie 截断了包含该事件的字段的完整路径。完整路径超过字符限制。
"records": [
{
"jsonPath": "$..usssn2.usssn3.usssn4.usssn5.usssn6.usssn7.usssn8.usssn9.usssn10.usssn11.usssn12.usssn13.usssn14.usssn15.usssn16.usssn17.usssn18.usssn19.usssn20.usssn21.usssn22.usssn23.usssn24.usssn25.usssn26.usssn27.usssn28.usssn29['abcdefghijklmnopqrstuvwxyz']",
"recordIndex": 2335
}
]
在前面的示例中,调查发现表明 Macie 在索引 2335(记录号 2336)的记录中检测到了敏感数据。在该记录中,Macie 在名为 abcdefghijklmnopqrstuvwxyz
的字段中检测到了敏感数据。记录中该字段的完整JSON路径是:
$['1234567890']usssn1.usssn2.usssn3.usssn4.usssn5.usssn6.usssn7.usssn8.usssn9.usssn10.usssn11.usssn12.usssn13.usssn14.usssn15.usssn16.usssn17.usssn18.usssn19.usssn20.usssn21.usssn22.usssn23.usssn24.usssn25.usssn26.usssn27.usssn28.usssn29['abcdefghijklmnopqrstuvwxyz']
以下示例显示了一个Record
对象的结构,该对象指定 Macie 在JSON文件中检测到的敏感数据出现的位置。在此示例中,出现的是数组中的特定值。
"records": [
{
"jsonPath": "$.access.key[2]",
"recordIndex": 0
}
]
在前面的示例中,调查发现表明 Macie 在名为 key
的数组的第二个值中检测到了敏感数据。该数组是名为 access
的对象的子项。
以下示例显示了一个Record
对象的结构,该对象指定 Macie 在 Lin JSON es 文件中检测到的敏感数据出现的位置。
"records": [
{
"jsonPath": "$.access.key",
"recordIndex": 3
}
]
在前面的示例中,调查发现表明 Macie 在文件中的第三个值(行)中检测到了敏感数据。在该行中,事件位于名为 key
的字段中,该字段是名为 access
的对象的子项。