

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

# Amazon CloudTrail 基于资源的策略示例
<a name="security_iam_resource-based-policy-examples"></a>

本节提供了 L CloudTrail ake 仪表板、事件数据存储和频道的基于资源的策略示例。

CloudTrail 支持以下类型的基于资源的策略：
+ 基于资源的政策，用于与 CloudTrail Lake 以外的事件源集成 Lake 的频道。 Amazon用于该通道的基于资源的策略将定义哪些主体实体（账户、用户、角色和联合用户）可以针对该通道调用 `PutAuditEvents`，以将事件传送到目标事件数据存储。有关创建与 CloudTrail Lake 集成的更多信息，请参阅[与外部的事件源创建集成 Amazon](query-event-data-store-integration.md)。
+ 控制哪些主体可以对您的事件数据存储执行操作的基于资源的策略。您可以使用基于资源的策略来提供对事件数据存储的跨账户访问。
+ 仪表板上基于资源的策略， CloudTrail 允许按照您在为仪表板设置刷新计划时定义的时间间隔刷新 La CloudTrail ke 仪表板。有关更多信息，请参阅 [使用 CloudTrail 控制台为自定义仪表板设置刷新计划](lake-dashboard-refresh.md)。

**Topics**
+ [通道的基于资源的策略示例](#security_iam_resource-based-policy-examples-channels)
+ [事件数据存储的基于资源的策略示例](#security_iam_resource-based-policy-examples-eds)
+ [控制面板的基于资源的策略示例](#security_iam_resource-based-policy-examples-dashboards)

## 通道的基于资源的策略示例
<a name="security_iam_resource-based-policy-examples-channels"></a>

用于该通道的基于资源的策略将定义哪些主体实体（账户、用户、角色和联合用户）可以针对该通道调用 `PutAuditEvents`，以将事件传送到目标事件数据存储。

该策略所需的信息由集成类型决定。
+ 对于方向集成， CloudTrail 要求策略包含合作伙伴的 Amazon Web Services 账户 IDs，并要求您输入合作伙伴提供的唯一外部 ID。 CloudTrail 使用 CloudTrail 控制台创建集成时 Amazon Web Services 账户 IDs ，会自动将合作伙伴的策略添加到资源策略中。请参阅[合作伙伴的文档](https://docs.amazonaws.cn/awscloudtrail/latest/userguide/query-event-data-store-integration.html#cloudtrail-lake-partner-information#lake-integration-partner-documentation)，了解如何获取保单所需的 Amazon Web Services 账户 号码。
+ 对于解决方案集成，您必须至少指定一个 Amazon Web Services 账户 ID 作为委托人，并且可以选择输入外部 ID 以防止副手感到困惑。

以下是对基于资源的策略的要求：
+  该策略至少包含一个语句。该策略最多可以包含 20 个语句。
+  每个语句至少包含一个主体。主体可以是账户、用户、角色或联合用户。一个语句最多可以包含 50 个主体。
+ 该策略中定义的资源 ARN 必须与该策略附加到的通道 ARN 相匹配。
+  该策略仅包含一项操作：`cloudtrail-data:PutAuditEvents`

除非该策略拒绝通道所有者访问资源，否则该所有者可以针对该通道调用 `PutAuditEvents` API。

**Topics**
+ [示例：为主体提供通道访问权限](#security_iam_resource-based-policy-examples-principals)
+ [示例：使用外部 ID 防范混淆代理](#security_iam_resource-based-policy-examples-externalID)

### 示例：为主体提供通道访问权限
<a name="security_iam_resource-based-policy-examples-principals"></a>

以下示例向使用 ARNs`arn:aws:iam::111122223333:root``arn:aws:iam::444455556666:root`、和`arn:aws:iam::123456789012:root`的委托人授予使用 ARN `arn:aws:cloudtrail:us-east-1:777788889999:channel/EXAMPLE-80b5-40a7-ae65-6e099392355b` 在 CloudTrail 频道上调用 [PutAuditEvents](https://docs.amazonaws.cn/awscloudtraildata/latest/APIReference/API_PutAuditEvents.html)API 的权限。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":
    [
        {
            "Sid": "ChannelPolicy",
            "Effect": "Allow",
            "Principal":
            {
                "AWS":
                [
                    "arn:aws:iam::{{111122223333}}:root",
                    "arn:aws:iam::444455556666:root",
                    "arn:aws:iam::123456789012:root"
                ]
            },
            "Action": "cloudtrail-data:PutAuditEvents",
            "Resource": "arn:aws:cloudtrail:us-east-1:777788889999:channel/EXAMPLE-80b5-40a7-ae65-6e099392355b"
        }
    ]
}
```

------

### 示例：使用外部 ID 防范混淆代理
<a name="security_iam_resource-based-policy-examples-externalID"></a>

以下示例将使用外部 ID 来解决和防范[混淆代理](https://docs.amazonaws.cn/awscloudtrail/latest/userguide/cross-service-confused-deputy-prevention.html)。混淆代理问题是一个安全性问题，即不具有某操作执行权限的实体可能会迫使具有更高权限的实体执行该操作。

集成合作伙伴会创建要在策略中使用的外部 ID，然后在创建集成的过程中向您提供该外部 ID。该值可以是任意唯一字符串，如密码或账号。

如果对 [PutAuditEvents](https://docs.amazonaws.cn/awscloudtraildata/latest/APIReference/API_PutAuditEvents.html)API 的调用包含策略中定义的外部 ID 值 ARNs `arn:aws:iam::111122223333:root``arn:aws:iam::444455556666:root`，则该示例`arn:aws:iam::123456789012:root`向使用、和的委托人授予在 CloudTrail 频道资源上调用 `PutAuditEvents` API 的权限。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":
    [
        {
            "Sid": "ChannelPolicy",
            "Effect": "Allow",
            "Principal":
            {
                "AWS":
                [
                    "arn:aws:iam::{{111122223333}}:root",
                    "arn:aws:iam::444455556666:root",
                    "arn:aws:iam::123456789012:root"
                ]
            },
            "Action": "cloudtrail-data:PutAuditEvents",
            "Resource": "arn:aws:cloudtrail:us-east-1:777788889999:channel/EXAMPLE-80b5-40a7-ae65-6e099392355b"
        }
    ]
}
```

------

## 事件数据存储的基于资源的策略示例
<a name="security_iam_resource-based-policy-examples-eds"></a>

基于资源的策略可让您控制哪些主体可以对您的事件数据存储执行操作。

您可以使用基于资源的策略来提供跨账户访问，以允许选定的主体查询您的事件数据存储、列出和取消查询以及查看查询结果。

对于 CloudTrail Lake 控制面板，基于资源的策略用于 CloudTrail 允许在事件数据存储上运行查询，以便在仪表板刷新时填充仪表板小组件的数据。 CloudTrail 当您[创建自定义仪表板或在 CloudTrail 控制台上[启用 Highli](lake-dashboard-highlights.md) ghts 仪表板时，La](lake-dashboard-custom.md) ke 允许您选择将基于资源的默认策略附加到事件数据存储。

事件数据存储的基于资源的策略支持以下操作：
+  `cloudtrail:StartQuery` 
+  `cloudtrail:CancelQuery` 
+  `cloudtrail:ListQueries` 
+  `cloudtrail:DescribeQuery` 
+  `cloudtrail:GetQueryResults` 
+  `cloudtrail:GenerateQuery` 
+  `cloudtrail:GenerateQueryResultsSummary` 
+  `cloudtrail:GetEventDataStore` 

在 CloudTrail 控制台上[创建](query-event-data-store-cloudtrail.md#query-event-data-store-cloudtrail-procedure)或[更新](query-event-data-store-update.md)事件数据存储或管理仪表板时，您可以选择向事件数据存储中添加基于资源的策略。您也可以运行[put-resource-policy](https://docs.amazonaws.cn/cli/latest/reference/cloudtrail/put-resource-policy.html)命令将基于资源的策略附加到事件数据存储。

基于资源的策略由一个或多个语句组成。例如，它可以包含一条 CloudTrail 允许查询仪表板的事件数据存储的语句和另一条允许跨账户访问以查询事件数据存储的语句。您可以从 CloudTrail 控制台上事件数据存储的详细信息页面[更新](query-event-data-store-update.md)现有事件数据存储的基于资源的策略。

对于[组织事件数据存储](cloudtrail-lake-organizations.md)， CloudTrail 创建[基于资源的默认策略，该策略](cloudtrail-lake-organizations.md#cloudtrail-lake-organizations-eds-rbp)列出了允许委派管理员帐户对组织事件数据存储执行的操作。此策略中的权限来自 Amazon Organizations中的委派管理员权限。在组织事件数据存储或组织发生更改后（例如，注册或删除了 CloudTrail 委托管理员帐户），此策略会自动更新。

**Topics**
+ [示例：允许 CloudTrail 运行查询以刷新仪表板](#security_iam_resource-based-policy-examples-eds-dashboard)
+ [示例：允许其他账户查询事件数据存储并查看查询结果](#security_iam_resource-based-policy-examples-eds-query)

### 示例：允许 CloudTrail 运行查询以刷新仪表板
<a name="security_iam_resource-based-policy-examples-eds-dashboard"></a>

要在刷新期间在 CloudTrail Lake 仪表板上填充数据，您需要 CloudTrail 允许代表您运行查询。为此，请将基于资源的策略附加到与仪表板小组件关联的每个事件数据存储中，其中包括一条允许 CloudTrail 执行该`StartQuery`操作以填充小组件数据的语句。

下面是语句的要求：
+ 唯一 `Principal` 是 `cloudtrail.amazonaws.com`。
+ 唯一允许的 `Action` 是 `cloudtrail:StartQuery`。
+ `Condition`仅包括控制面板 ARN 和 ID。 Amazon Web Services 账户 对于`AWS:SourceArn`，您可以提供一系列仪表板 ARNs。

以下示例策略包括一条语句，该语句 CloudTrail 允许在事件数据存储上查询两个名为和的自定义仪表板`example-dashboard1``example-dashboard2`以及名为 account 的 Highlights `AWSCloudTrail-Highlights` 仪表板`123456789012`。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":
    [
        {
            "Effect": "Allow",
            "Principal":
            {
                "Service": "cloudtrail.amazonaws.com"
            },
            "Action":
            [
                "cloudtrail:StartQuery"
            ],
            "Resource": "arn:aws:cloudtrail:{{us-east-1}}:{{123456789012}}:dashboard/*",
            "Condition": {
               "StringLike": {
                  "AWS:SourceArn": [
                     "arn:aws:cloudtrail:us-east-1:123456789012:dashboard/example-dashboard1",
                     "arn:aws:cloudtrail:us-east-1:123456789012:dashboard/example-dashboard2",
                     "arn:aws:cloudtrail:us-east-1:123456789012:dashboard/AWSCloudTrail-Highlights"
                  ],
                  "AWS:SourceAccount": "123456789012"
               }
            }
        }
    ]
}
```

------

### 示例：允许其他账户查询事件数据存储并查看查询结果
<a name="security_iam_resource-based-policy-examples-eds-query"></a>

您可以使用基于资源的策略来提供对事件数据存储的跨账户访问，以允许其他账户对您的事件数据存储运行查询。

以下示例策略包含一条语句，允许账户 `111122223333`、`777777777777`、`999999999999` 和 `111111111111` 中的根用户运行查询并获取账户 ID `555555555555` 拥有的事件数据存储的查询结果。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "policy1",
      "Effect": "Allow",
      "Principal": {
        "AWS": [
            "arn:aws:iam::{{111122223333}}:root",
            "arn:aws:iam::777777777777:root",
            "arn:aws:iam::999999999999:root",
            "arn:aws:iam::111111111111:root"
        ]
      },
      "Action": [
        "cloudtrail:StartQuery",
        "cloudtrail:GetEventDataStore",
        "cloudtrail:GetQueryResults"
      ],
      "Resource": "arn:aws:cloudtrail:us-east-1:555555555555:eventdatastore/example80-699f-4045-a7d2-730dbf313ccf"
    }
  ]
}
```

------

## 控制面板的基于资源的策略示例
<a name="security_iam_resource-based-policy-examples-dashboards"></a>

您可以为 La CloudTrail ke 仪表板设置刷新计划，这样您就可以 CloudTrail 按照您在设置刷新计划时定义的时间间隔代表您刷新仪表板。为此，您需要将基于资源的策略附加到控制面板， CloudTrail 以允许在仪表板上执行`StartDashboardRefresh`操作。

以下是对基于资源的策略的要求：
+ 唯一 `Principal` 是 `cloudtrail.amazonaws.com`。
+ 策略中唯一允许的 `Action` 是 `cloudtrail:StartDashboardRefresh`。
+ `Condition`仅包括控制面板 ARN 和 ID。 Amazon Web Services 账户 

以下示例策略允许 CloudTrail 刷新名为 account `exampleDash` 的仪表板`123456789012`。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":
    [
        {
            "Effect": "Allow",
            "Principal":
            {
                "Service": "cloudtrail.amazonaws.com"
            },
            "Action":
            [
                "cloudtrail:StartDashboardRefresh"
            ],
            "Resource": "arn:aws:cloudtrail:{{us-east-1}}:{{123456789012}}:dashboard/*",
            "Condition": {
                "StringEquals": {
                    "AWS:SourceArn": "arn:aws:cloudtrail:us-east-1:123456789012:dashboard/exampleDash",
                    "AWS:SourceAccount":"123456789012"
                }
            }
        }
    ]
}
```

------