

# IAM Access Analyzer 策略生成
<a name="access-analyzer-policy-generation"></a>

作为管理员或开发人员，您可以向 IAM 实体（用户或角色）授予超出其需要的权限。IAM 提供了多个选项来帮助您优化授予的权限。其中一种选择是根据实体的访问活动生成 IAM 策略。IAM 访问分析器会查看您的 Amazon CloudTrail 日志并生成一个策略模板，其中包含角色在指定日期范围内使用的权限。您可以使用模板创建具有精细权限的策略，该策略仅授予支持特定使用案例所需的权限。

**Topics**
+ [策略生成的工作原理](#access-analyzer-policy-generation-howitworks)
+ [服务和操作级别的信息](#access-analyzer-policy-generation-service-action)
+ [生成策略需知信息](#access-analyzer-policy-generation-know)
+ [生成策略所需的权限](#access-analyzer-policy-generation-perms)
+ [基于 CloudTrail 活动生成策略（控制台）](#access-analyzer-policy-generation-console)
+ [使用其他账户中的 Amazon CloudTrail 数据生成策略](#access-analyzer-policy-generation-cross-account)
+ [基于 CloudTrail 活动生成策略（Amazon CLI）](#access-analyzer-policy-generation-cli)
+ [基于 CloudTrail 活动生成策略（Amazon API）](#access-analyzer-policy-generation-api)
+ [IAM Access Analyzer 策略生成服务](access-analyzer-policy-generation-action-last-accessed-support.md)

## 策略生成的工作原理
<a name="access-analyzer-policy-generation-howitworks"></a>

IAM Access Analyzer 分析 CloudTrail 事件以识别 IAM 实体（用户或角色）已使用的操作和服务。然后，它会生成基于该活动的 IAM 策略。将附加到实体的广泛权限策略替换为生成的策略时，来可以优化实体的权限。以下是策略生成过程的高度概述。
+ **设置策略模板生成** – 您可以为 IAM Access Analyzer 指定一个最多 90 天的时间段来分析历史 Amazon CloudTrail CloudTrail 事件。您必须指定一个现有服务角色或创建一个新的服务角色。服务角色允许 IAM Access Analyzer 访问您的 CloudTrail 跟踪和服务上次访问的信息，以识别所使用的服务和操作。在生成策略之前，必须指定记录账户事件的 CloudTrail 跟踪。有关 CloudTrail 数据 IAM Access Analyzer 配额的更多信息，请参阅 [IAM Access Analyzer 配额](https://docs.amazonaws.cn/IAM/latest/UserGuide/reference_iam-quotas.html#reference_access-analyzer-quotas)。
+ **生成策略** –IAM Access Analyzer 会根据 CloudTrail 事件中的访问活动生成策略。
+ **查看和自定义策略** –生成策略后，您可以查看实体在指定日期范围内使用的服务和操作。您可以通过添加或删除权限、指定资源以及向策略模板添加条件来进一步自定义策略。
+ **创建和附加策略** – 您可以通过创建托管策略来保存生成的策略。您可以将创建的策略附加到其活动用于生成策略的用户或角色。

## 服务和操作级别的信息
<a name="access-analyzer-policy-generation-service-action"></a>

IAM Access Analyzer 生成 IAM 策略时，会返回信息来帮助您进一步自定义策略。生成策略时可以返回两类信息：
+ **包含操作级别信息的策略 -** 对于某些 Amazon 服务（例如 Amazon EC2），IAM Access Analyzer 可以识别在 CloudTrail 事件中发现的操作，并列出其生成的策略中所使用的操作。有关支持的服务的列表，请参阅 [IAM Access Analyzer 策略生成服务](access-analyzer-policy-generation-action-last-accessed-support.md)。对于某些服务，IAM Access Analyzer 会提示您将服务的操作添加到生成的策略中。
+ **包含服务级别信息的策略–** IAM Access Analyzer 使用[上次访问](https://docs.amazonaws.cn/IAM/latest/UserGuide/access_policies_last-accessed.html)的信息创建策略模板，其中包含最近使过用的所有服务。使用 Amazon Web Services 管理控制台 时，我们会提示您查看服务并添加操作以完成策略。

有关每项服务中的操作列表，请参阅《服务授权参考》中的 [Amazon 服务的操作、资源和条件键](https://docs.amazonaws.cn/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html)。

## 生成策略需知信息
<a name="access-analyzer-policy-generation-know"></a>

在生成策略之前，请查看以下重要详细信息。
+ **启用 CloudTrail 跟踪 ** – 您必须为账户启用 CloudTrail 跟踪，才能基于访问活动生成策略。创建 CloudTrail 跟踪时，CloudTrail 会将与跟踪相关的事件发送到您指定的 Amazon S3 存储桶。要了解如何创建 CloudTrail 跟踪，请参阅*《Amazon CloudTrail 用户指南》*中的[为您的 Amazon 账户创建跟踪](https://docs.amazonaws.cn/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html)。
+ **数据事件不可用** — IAM Access Analyzer 不会在生成的策略中识别数据事件（例如 Amazon S3 数据事件）的操作级别活动。
+ **PassRole** – CloudTrail 不会跟踪 `iam:PassRole` 操作，生成的策略中也不包含该操作。
+ **缩短策略生成时间** – 要加快生成策略的速度，请缩短在设置策略生成时指定的日期范围。
+ **使用 CloudTrail 进行审计** – 请勿将策略生成用于审计目的；而是使用 CloudTrail 进行审计。有关使用 CloudTrail 的更多信息，请参阅[使用 Amazon CloudTrail 记录 IAM 和 Amazon STS API 调用](https://docs.amazonaws.cn/IAM/latest/UserGuide/cloudtrail-integration.html)。
+ **拒绝的操作** – 策略生成会审查所有 CloudTrail 事件，包括拒绝的操作。
+ **一个策略 IAM 控制台** – 您可以在 IAM 控制台中一次生成一个策略。
+ **所生成策略的可用性 IAM 控制台** – 您可以在生成策略后的 7 天内在 IAM 控制台中查看生成的策略。7 天后，您必须生成新的策略。
+ **策略生成配额** – 有关 IAM Access Analyzer 策略生成配额的更多信息，请参阅 [IAM Access Analyzer 配额](https://docs.amazonaws.cn/IAM/latest/UserGuide/reference_iam-quotas.html#reference_access-analyzer-quotas)。
+ **适用 Amazon S3 Standard 费率** - 当您使用策略生成功能时，IAM 访问分析器会审核 S3 存储桶中的 CloudTrail 日志。访问您的 CloudTrail 日志以生成策略不会产生额外的存储费用。Amazon 对存储在 S3 存储桶中的 CloudTrail 日志的请求和数据传输收取标准 Amazon S3 费率。
+ **Amazon Control Tower 支持** – 策略生成不支持使用 Amazon Control Tower 在生成策略时创建的 Amazon CloudTrail 跟踪，原因如下：
  + 来自组织的 CloudTrail 数据记录在另一个账户中，即 Amazon Control Tower 日志存档账户。
  + 由于 Amazon Control Tower 的服务控制策略 (SCP) 对 S3 日志记录存储桶设置的限制，因此无法重新配置存储这些日志的 S3 存储桶的权限。

## 生成策略所需的权限
<a name="access-analyzer-policy-generation-perms"></a>

首次生成策略所需的权限与为后续使用生成策略所需的权限不同。有关更多信息，请参阅 [Amazon Identity and Access Management Access Analyzer 入门](access-analyzer-getting-started.md)。

**首次设置**  
首次生成策略时，必须在账户中选择一个合适的现有[服务角色](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-role)或创建一个新的服务角色。服务角色允许 IAM Access Analyzer 访问账户中的 CloudTrail 以及服务上次访问的信息。仅管理员有权创建和配置角色。因此，我们建议管理员在首次设置时创建服务角色。要了解有关创建服务角色所需权限的更多信息，请参阅[创建角色以向 Amazon 服务委派权限](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_roles_create_for-service.html)。

### 创建服务角色所需的权限
<a name="collapsible-section-1"></a>

创建服务角色时，您需要为该角色配置两个策略。您可以将 IAM *权限策略*附加到角色，它指定角色可以执行的操作。您还可以将*角色信任策略*附加到角色，它指定可以使用该角色的主体。

第一个示例策略显示了生成策略所需的服务角色的权限策略。第二个示例策略显示了服务角色所需的角色信任策略。在使用 Amazon API 或 Amazon CLI 生成策略时，可以使用这些策略帮助创建服务角色。在策略生成过程中使用 IAM 控制台创建服务角色时，我们会为您生成这些策略。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "cloudtrail:GetTrail",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:GetServiceLastAccessedDetails",
                "iam:GenerateServiceLastAccessedDetails"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket",
                "arn:aws:s3:::amzn-s3-demo-bucket/*"
            ]
        }
    ]
}
```

------

以下示例策略显示的角色信任策略具有允许 IAM Access Analyzer 担任角色的权限。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "access-analyzer.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

**后续使用**  
要在 Amazon Web Services 管理控制台 中生成策略，IAM 用户必须拥有允许他们将用于生成策略的服务角色传递给 IAM Access Analyzer 的权限策略。`iam:PassRole` 通常与 `iam:GetRole` 共同使用，使用户能够获取准备进行传递的角色的详细信息。在此示例中，用户只能传递位于指定账户中并且名称以 `AccessAnalyzerMonitorServiceRole*` 开头的角色。要了解将 IAM 角色传递给 Amazon 服务的更多信息，请参阅[向用户授予权限以将角色传递给 Amazon 服务](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_roles_use_passrole.html)。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowUserToPassRole",
      "Effect": "Allow",
      "Action": [
        "iam:GetRole",
        "iam:PassRole"
      ],
      "Resource": "arn:aws:iam::123456789012:role/service-role/AccessAnalyzerMonitorServiceRole*"
    }
  ]
}
```

------

您还必须具有以下 IAM Access Analyzer 权限才能在 Amazon Web Services 管理控制台、Amazon API 中或 Amazon CLI 中生成策略，如以下策略语句所示。

```
{
  "Sid": "AllowUserToGeneratePolicy",
  "Effect": "Allow",
  "Action": [
    "access-analyzer:CancelPolicyGeneration",
    "access-analyzer:GetGeneratedPolicy",
    "access-analyzer:ListPolicyGenerations",
    "access-analyzer:StartPolicyGeneration"
  ],
  "Resource": "*"
}
```

**首次使用和后续使用**  
使用 Amazon Web Services 管理控制台 生成策略时，必须授予 `cloudtrail:ListTrails` 在账户中列出 CloudTrail 跟踪的权限，如以下策略语句所示。

```
{
  "Sid": "AllowUserToListTrails",
  "Effect": "Allow",
  "Action": [
    "CloudTrail:ListTrails"
  ],
  "Resource": "*"
}
```

## 基于 CloudTrail 活动生成策略（控制台）
<a name="access-analyzer-policy-generation-console"></a>

您可以为 IAM 用户或角色生成策略。

### 步骤 1：基于 CloudTrail 活动生成策略
<a name="access-analyzer-policy-generation-generate"></a>

以下过程介绍了如何使用 Amazon Web Services 管理控制台 为角色生成策略。

**为 IAM 角色生成策略**

1. 登录 Amazon Web Services 管理控制台，然后通过以下网址打开 IAM 控制台：[https://console.aws.amazon.com/iam/](https://console.amazonaws.cn/iam/)。

1. 在左侧的导航窗格中，选择**角色**。
**注意**  
基于 IAM 用户的活动生成策略的步骤几乎完全相同。要执行此操作，请选择 **Users (用户)**，不要选择 **Roles (角色)**。

1. 在账户的角色列表中，选择要将其活动用于生成策略的角色的名称。

1. 在 **Permissions (权限)** 选项卡的**基于 CloudTrail 事件生成策略**部分，选择 **Generate policy (生成策略)**。

1. 在 **Generate policy (生成策略)**页面，指定希望 IAM Access Analyzer 分析 CloudTrail 事件（以对角色采取操作）的时间段。最多可以选择 90 天。我们建议您选择尽可能短的时间段以缩短策略生成时间。

1. 在 **CloudTrail 访问**部分中，选择合适的现有角色或创建新角色（如果不存在合适角色）。此角色授予 IAM Access Analyzer 代表您访问 CloudTrail 数据的权限，以查看访问活动并识别已使用的服务和操作。要了解该角色所需的权限，请参阅 [生成策略所需的权限](#access-analyzer-policy-generation-perms)。

1. 在**要分析的 CloudTrail 跟踪**部分，指定记录账户事件的 CloudTrail 跟踪。

   如果您选择将日志存储在其他账户中的 CloudTrail 跟踪记录，则会显示一个有关跨账户访问的信息框。跨账户访问需要额外的设置。要了解更多信息，请稍后参阅本主题中的 [Choose a role for cross-account access](#chooserole)。

1. 选择 **Generate Policy (生成策略)**。

1. 在策略生成过程中，您将返回到 **Permissions**（权限）选项卡上的 **Roles**（角色）**Summary**（摘要）页面。等到 **Policy request details (策略请求详细信息)** 部分中的状态显示为 **Success (成功)** 后，选择 **View generated policy (查看生成的策略)**。您可以在策略生成后的七天内进行查看。如果生成另一个策略，则会将现有策略替换为生成的新策略。

### 步骤 2：查看权限并为所使用的服务添加操作
<a name="access-analyzer-policy-generation-console-review"></a>

查看 IAM Access Analyzer 识别到的角色所使用的服务和操作。您可以为生成的策略模板添加用于任何服务的操作。

1. 查看以下部分：
   + 在 **Review permissions (查看权限)** 页面，查看 **Actions included in the generated policy (生成的策略中包含的操作)** 列表。该列表显示了角色在指定日期范围内使用的 IAM Access Analyzer 已识别到的服务*和*操作。
   + **Services used (使用的服务)** 部分显示了角色在指定日期范围内使用的 IAM Access Analyzer 已识别到的其他服务。有关使用了哪些操作的信息可能不适用于本部分中列出的服务。使用列出的各项服务的菜单手动选择您希望在策略中包含的操作。

1. 添加完操作后，选择 **Next (下一步)**。

### 步骤 3：进一步自定义生成的策略
<a name="access-analyzer-policy-generation-customize"></a>

您可以通过添加或删除权限或指定资源来进一步自定义策略。

**自定义生成的策略**

1. 请更新策略模板。策略模板包含支持资源级权限的操作的资源 ARN 占位符，如下图所示。*资源级权限*指的是能够指定允许用户对哪些资源执行操作的能力。我们建议您使用 [ARN](https://docs.amazonaws.cn/IAM/latest/UserGuide/reference_identifiers.html#identifiers-arns) 在策略中为支持资源级权限的操作指定个人资源。您可以将占位符资源 ARN 替换为使用案例的有效资源 ARN。

   如果操作不支持资源级权限，则必须使用通配符 (`*`) 来指定所有资源都可能受到操作的影响。要了解哪些 Amazon 服务支持资源级权限，请参阅 [Amazon services that work with IAM](https://docs.amazonaws.cn/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)（能够与 IAM 搭配使用的亚马逊云科技服务）。有关各项服务中的操作列表，以及要了解哪些操作支持资源级权限，请参阅 [Amazon 服务的操作、资源和条件键](https://docs.amazonaws.cn/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html)。  
![\[策略模板中的资源 ARN 占位符\]](http://docs.amazonaws.cn/IAM/latest/UserGuide/images/res_plc_lg.png)

1. （可选）在模板中添加、修改或删除 JSON 策略语句。要了解有关编写 JSON 策略的更多信息，请参阅[创建 IAM 策略（控制台）](https://docs.amazonaws.cn/IAM/latest/UserGuide/access_policies_create-console.html)。

1. 自定义策略模板后，可以选择以下选项：
   + （可选）您可以复制模板中的 JSON，以便在 **Generated policy (生成的策略)** 页面之外单独使用。例如，您想要使用 JSON 在其他账户中创建策略时。如果模板中策略的字符超过 JSON 策略的字符上限 6144，则会将该策略拆分为多个策略。
   + 选择 **Next (下一步)**，以在同一账户中查看并创建托管策略。

### 步骤 4：查看并创建托管策略
<a name="access-analyzer-policy-generation-console-create"></a>

如果您有权创建和附加 IAM 策略，则可以通过生成的策略创建托管策略。然后，您可以将策略附加到账户中的用户或角色。

**查看并创建策略**

1. 在 **Review and create managed policy (查看并创建托管策略)** 页面，为创建的策略输入 **Name (名称)** 和 **Description (描述)**（可选）。

1. （可选）在 **Summary (摘要)** 部分，您可以查看策略中将包含的权限。

1. （可选）通过以密钥值对的形式附加标签来向策略添加元数据。有关将在 IAM 中使用标签的更多信息，请参阅 [Tagging IAM resources](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_tags.html)（标记 IAM 资源）。

1. 完成后，请执行以下操作之一：
   + 您可以将新策略直接附加到用于生成策略的角色。为此，请在页面底部附近，选中**将策略附加到 *YourRoleName*** 旁边的复选框。然后选择 **Create and attach policy (创建并附加策略)**。
   + 否则，请选择 **Create policy (创建策略)**。您创建的策略位于 IAM 控制台上，可以在 **Policies (策略)** 导航窗格的策略列表中找到它。

1. 您可以将创建的策略附加到账户中的实体。附加策略后，您可以删除可以附加到该实体的任何其他过于宽泛的策略。要了解如何附加托管策略，请参阅[添加 IAM 身份权限（控制台）](https://docs.amazonaws.cn/IAM/latest/UserGuide/access_policies_manage-attach-detach.html#add-policies-console)。

## 使用其他账户中的 Amazon CloudTrail 数据生成策略
<a name="access-analyzer-policy-generation-cross-account"></a>

您可以创建将数据存储在中央账户中的 CloudTrail 跟踪记录，以简化管理活动。例如，您可以使用 Amazon Organizations 创建跟踪记录，以为该企业中的所有 Amazon Web Services 账户 记录所有事件。跟踪记录属于一个中央账户。如果要为账户中的用户或角色生成策略，而该账户与您存储 CloudTrail 日志数据所在的账户不同，则必须授予跨账户访问权限。为此，您需要一个角色和一个存储桶策略来授予 IAM Access Analyzer 对您的 CloudTrail 日志的权限。有关创建 Organizations 跟踪记录的更多信息，请参阅[为企业创建跟踪记录](https://docs.amazonaws.cn/awscloudtrail/latest/userguide/creating-trail-organization.html)。

在此示例中，假定您要为账户 A 中的用户或角色生成策略。账户 A 中的 CloudTrail 跟踪记录将 CloudTrail 日志存储在账户 B 的存储桶中。在生成策略之前，您必须进行以下更新：

1. 选择一个现有角色，或创建一个新的服务角色，以授予 IAM Access Analyzer 对账户 B（存储您的 CloudTrail 日志的位置）中存储桶的访问权限。

1. 验证账户 B 中的 Amazon S3 存储桶对象所有权和存储桶权限策略，以便 IAM 访问分析器可以访问存储桶中的对象。

**步骤 1：选择或创建用于跨账户访问的角色**
+ 在 **Generate policy**（生成策略）屏幕上，如果您的账户中存在具有所需权限的角色，则会为您预先选择 **Use an existing role**（使用现有角色）的选项。否则，请选择 **Create and use a new service role**（创建和使用新的服务角色）。新角色用于向 IAM Access Analyzer 授予对账户 B 中 CloudTrail 日志的访问权限。

**步骤 2：验证或更新账户 B 中的 Amazon S3 存储桶配置**

1. 登录到 Amazon Web Services 管理控制台，然后通过以下网址打开 Amazon S3 控制台：[https://console.aws.amazon.com/s3/](https://console.amazonaws.cn/s3/)。

1. 在 **Buckets**（存储桶）列表中，请选择存储 CloudTrail 日志的存储桶名称。

1. 请选择 **Permissions**（权限）选项卡，然后转到 **Object Ownership**（对象所有权）部分。

   使用 Amazon S3 对象所有权存储桶设置来控制上传到存储桶的对象的所有权。默认情况下，当其他 Amazon Web Services 账户 将对象上传到存储桶时，这些对象仍为上传账户所有。要生成策略，存储桶中的所有对象都必须归存储桶拥有者所有。您可能需要更改您存储桶的 **Object Ownership**（对象所有权）设置，具体视您的 ACL 使用案例而定。将 **Object Ownership**（对象所有权）设置为以下选项之一。
   + **强制存储桶拥有者**（推荐）
   + **首选存储桶拥有者**
**重要**  
要成功生成策略，存储桶中的对象必须归存储桶拥有者所有。如果您选择使用 **Bucket owner preferred**（首选存储桶拥有者），您只能在对象所有权更改后的时间段生成策略。

   如需了解关于 Amazon S3 中的对象所有权的更多信息，请参阅*《Amazon S3 用户指南》*中的[控制存储桶的对象所有权和禁用 ACL](https://docs.amazonaws.cn/AmazonS3/latest/userguide/about-object-ownership.html)。

1. 向账户 B 中的 Amazon S3 存储桶策略添加权限，以允许对账户 A 中的角色进行访问。

   以下示例策略针对名为 `amzn-s3-demo-bucket` 的存储桶允许 `ListBucket` 和 `GetObject`。如果访问存储桶的角色属于您企业中的账户并且名称以 `AccessAnalyzerMonitorServiceRole` 开头，则其会允许访问权限。使用 [https://docs.amazonaws.cn/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalarn](https://docs.amazonaws.cn/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalarn) 作为 `Resource` 元素中的 `Condition` 可确保角色只能访问账户活动（如果其属于账户 A）。您可以将 `amzn-s3-demo-bucket` 替换为存储桶名称，将 `optional-prefix` 替换为存储桶的可选前缀，将 `organization-id` 替换为组织 ID。

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "PolicyGenerationBucketPolicy",
         "Effect": "Allow",
         "Principal": {
           "AWS": "*"
         },
         "Action": [
           "s3:GetObject",
           "s3:ListBucket"
         ],
         "Resource": [
           "arn:aws:s3:::amzn-s3-demo-bucket",
           "arn:aws:s3:::amzn-s3-demo-bucket/optional-prefix/AWSLogs/organization-id/${aws:PrincipalAccount}/*"
         ],
         "Condition": {
           "StringEquals": {
             "aws:PrincipalOrgID": "organization-id"
           },
           "ArnLike": {
             "aws:PrincipalArn": "arn:aws:iam:::${aws:PrincipalAccount}:role/service-role/AccessAnalyzerMonitorServiceRole*"
           }
         }
       }
     ]
   }
   ```

------

1. 如果您使用 Amazon KMS 加密日志，请在您存储 CloudTrail 日志的账户中更新您的 Amazon KMS 密钥策略，以授予 IAM Access Analyzer 访问权限来使用密钥，如以下策略示例所示。将 `CROSS_ACCOUNT_ORG_TRAIL_FULL_ARN` 替换为您跟踪记录的 ARN，将 `organization-id` 替换为您的企业 ID。

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "AWS": "*"
         },
         "Action": "kms:Decrypt",
         "Resource": "*",
         "Condition": {
           "StringEquals": {
             "kms:EncryptionContext:aws:cloudtrail:arn": "CROSS_ACCOUNT_ORG_TRAIL_FULL_ARN",
             "aws:PrincipalOrgID": "organization-id"
           },
           "StringLike": {
             "kms:ViaService": [
               "access-analyzer.*.amazonaws.com",
               "s3.*.amazonaws.com"
               ]
           },
           "ArnLike": {
             "aws:PrincipalArn": "arn:aws:iam:::${aws:PrincipalAccount}:role/service-role/AccessAnalyzerMonitorServiceRole*"
           }
         }
        }
       ]
   }
   ```

------

## 基于 CloudTrail 活动生成策略（Amazon CLI）
<a name="access-analyzer-policy-generation-cli"></a>

您可以通过 Amazon CLI 使用以下命令生成策略。

**生成策略**
+ [aws accessanalyzer start-policy-generation](https://docs.amazonaws.cn/cli/latest/reference/accessanalyzer/start-policy-generation.html)

**查看生成的策略**
+ [aws accessanalyzer get-generated-policy](https://docs.amazonaws.cn/cli/latest/reference/accessanalyzer/get-generated-policy.html)

**取消策略生成请求**
+ [aws accessanalyzer cancel-policy-generation](https://docs.amazonaws.cn/cli/latest/reference/accessanalyzer/cancel-policy-generation.html)

**查看策略生成请求列表**
+ [aws accessanalyzer list-policy-generations](https://docs.amazonaws.cn/cli/latest/reference/accessanalyzer/list-policy-generations.html)

## 基于 CloudTrail 活动生成策略（Amazon API）
<a name="access-analyzer-policy-generation-api"></a>

您可以通过 Amazon API 使用以下操作生成策略。

**生成策略**
+ [StartPolicyGeneration](https://docs.amazonaws.cn/access-analyzer/latest/APIReference/API_StartPolicyGeneration.html)

**查看生成的策略**
+ [GetGeneratedPolicy](https://docs.amazonaws.cn/access-analyzer/latest/APIReference/API_GetGeneratedPolicy.html)

**取消策略生成请求**
+ [CancelPolicyGeneration](https://docs.amazonaws.cn/access-analyzer/latest/APIReference/API_CancelPolicyGeneration.html)

**查看策略生成请求列表**
+ [ListPolicyGenerations](https://docs.amazonaws.cn/access-analyzer/latest/APIReference/API_ListPolicyGenerations.html)