

# 基于访问活动生成策略
<a name="getting-started_reduce-permissions-edit-policy"></a>

您可以使用 AWS CloudTrail 中记录的 IAM 用户或 IAM 角色的访问活动，让 IAM Access Analyzer 生成客户管理型策略，以仅允许访问特定用户和角色所需的服务。

IAM Access Analyzer 生成 IAM 策略时，会返回信息来帮助您进一步自定义策略。生成策略时可以返回两类信息：
+ **包含操作级别信息的策略 -** 对于某些 AWS 服务（例如 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.aws.amazon.com/IAM/latest/UserGuide/access_policies_last-accessed.html)的信息创建策略模板，其中包含最近使过用的所有服务。使用 AWS 管理控制台 时，我们会提示您查看服务并添加操作以完成策略。

## 基于访问活动生成策略
<a name="getting-started_reduce-permissions-edit-policy-section-1"></a>

在下述步骤中，我们将减少分配给角色的权限，以匹配用户的使用情况。在选择用户时，请选择其使用情况可体现该角色的用户。许多客户设置了具有 **PowerUser** 权限的测试用户账户，然后让他们在短时间内执行一组特定的任务，以确定执行这些任务所需的访问权限。

------
#### [ Console ]

1. 按照 *AWS 登录用户指南*中的[如何登录 AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html)所述，根据用户类型选择相应的登录过程。

1. 在 **IAM 控制台主页**左侧的导航窗格中，在**搜索 IAM** 文本框中输入查询语句。

1. 在导航窗格中，选择**用户**，然后选择用户名以进入用户详细信息页面。

1. 在**权限**选项卡的“基于 CloudTrail 事件生成策略”部分下，选择**生成策略**。

1. 在**生成策略**页面上，配置以下项目：
   + 在**选择时间段**中，选择**过去 7 天**。
   + 对于**待分析的 CloudTrail 跟踪**，请选择记录该用户活动的区域和跟踪。
   + 请选择**创建和使用新的服务角色**。

1. 选择**生成策略**，然后等到角色创建完毕。在出现**正在生成策略**通知消息之前，请勿刷新或离开控制台页面。

1. 生成策略后，您必须根据需要使用资源的账户 ID 和 ARN 对其进行审查和自定义。此外，自动生成的策略可能不包含完成策略所需的操作级信息。有关更多信息，请参阅 [IAM Acess Analyzer 策略生成](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-generation.html)。

   例如，您可能编辑第一个包括 `Allow` 效果和 `NotAction` 元素的语句以仅允许 Amazon EC2 和 Amazon S3 操作。为此，请将其替换为具有 `FullAccessToSomeServices` ID 的语句。您的新策略可能类似于以下示例策略。

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
         {
             "Sid": "FullAccessToSomeServices",
             "Effect": "Allow",
             "Action": [
                 "ec2:*",
                 "s3:*"
             ],
             "Resource": "*"
         },
         {
             "Effect": "Allow",
             "Action": [
                 "iam:CreateServiceLinkedRole",
                 "iam:DeleteServiceLinkedRole",
                 "iam:ListRoles",
                 "organizations:DescribeOrganization"
             ],
             "Resource": "*"
         }
     ]
   }
   ```

------

1. 为了支持[授予最低权限](best-practices.md#grant-least-privilege)的最佳实践，请查看并更正[策略验证](access_policies_policy-validator.md)期间返回的任何错误、警告或建议。

1. 要进一步减少策略对特定操作和资源的权限，请在 CloudTrail **Event history**（事件历史记录）中查看您的事件。在此处，您可以查看有关用户已访问的特定操作和资源的详细信息。有关更多信息，请参阅 *AWS CloudTrail 用户指南*中的[在 CloudTrail 控制台中查看 CloudTrail 事件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events-console.html)。

1. 查看并验证您的策略后，请使用描述性名称进行保存。

1. 导航到**角色**页面，然后选择人员在执行新策略允许的任务时将担任的角色。

1. 选择**权限**选项卡，然后依次选择**添加权限**和**附加策略**。

1. 在**附加权限策略**页面的**其他权限策略**列表中，选择您创建的策略，然后选择**附加策略**。

1. 您将返回到**角色**详细信息页面。该角色附加了两个策略：您之前的 AWS 托管策略（例如 **PowerUserAccess**）和您的新策略。选中 AWS 托管策略的复选框，然后选择**移除**。当系统要求确认移除时，选择**移除**。

根据您创建的新策略，承担此角色的 IAM 用户、SAML 和 OIDC 联合主体和工作负载现在具有缩减的访问权限。

------
#### [ AWS CLI ]

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

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

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

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

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

------
#### [ API ]

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

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

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

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

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

------