

# 编辑 IAM 策略
<a name="access_policies_manage-edit"></a>

[策略](access_policies.md)是一个实体；在附加到身份或资源时，策略定义了它们的权限。策略作为 JSON 文档存储在 AWS 中，并在 IAM 中作为*基于身份的策略*附加到主体。您可以将基于身份的策略附加到主体（或身份），例如，IAM 用户组、用户或角色。基于身份的策略包括 AWS 托管策略、客户托管策略和[内联策略](access_policies_managed-vs-inline.md)。您可以在 IAM 中编辑客户托管策略和内联策略。AWS 托管策略无法编辑。AWS 账户中 IAM 资源的数量和大小是有限的。有关更多信息，请参阅 [IAM 和 AWS STS 配额](reference_iam-quotas.md)。

通常来说，最好使用客户管理型策略而非内联策略或 AWS 托管策略。AWS 托管策略通常提供广泛的管理权限或只读权限。内联策略不能在其他身份上重复使用，也不能在其所存在的身份之外托管。为了获得最高安全性，[请授予最低权限](best-practices.md#grant-least-privilege)，这意味着仅授予执行特定作业任务所需的权限。

创建或编辑 IAM policy 时，AWS 可以自动执行策略验证，以帮助您创建具有最低权限的有效策略。在 AWS 管理控制台 中，IAM 可识别 JSON 语法错误，而 IAM Access Analyzer 提供额外的策略检查和建议，以帮助您进一步优化策略。要了解策略验证的更多信息，请参阅 [IAM 策略验证](access_policies_policy-validator.md)。要了解有关 IAM Access Analyzer 策略检查和可执行建议的更多信息，请参阅 [IAM Access Analyzer 策略验证](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html)。

您可以使用 AWS 管理控制台、AWS CLI 或 AWS API 在 IAM 中编辑客户管理型策略和内联策略。有关使用 CloudFormation 模板添加或更新策略的更多信息，请参阅《CloudFormation 用户指南》**中的 [AWS Identity and Access Management 资源类型参考](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_IAM.html)。

**Topics**
+ [编辑 IAM 策略（控制台）](access_policies_manage-edit-console.md)
+ [编辑 IAM 策略（AWS CLI）](access_policies_manage-edit-cli.md)
+ [编辑 IAM 策略（AWS API）](access_policies_manage-edit-api.md)

# 编辑 IAM 策略（控制台）
<a name="access_policies_manage-edit-console"></a>

[策略](access_policies.md)是一个实体；在附加到身份或资源时，策略定义了它们的权限。您可以使用 AWS 管理控制台 在 IAM 中编辑*客户管理型策略*和*内联策略*。AWS 托管策略无法编辑。AWS 账户中 IAM 资源的数量和大小是有限的。有关更多信息，请参阅 [IAM 和 AWS STS 配额](reference_iam-quotas.md)。

有关策略结构和语法的更多信息，请参阅[AWS Identity and Access Management 中的策略和权限](access_policies.md)和[IAM JSON 策略元素参考](reference_policies_elements.md)。

## 先决条件
<a name="edit-customer-managed-policy-console-prerequisites"></a>

在更改策略的权限之前，您应查看其最近的服务级别活动。这非常重要，因为您不想删除使用它的主体（个人或应用程序）的访问权限。有关查看上次访问的信息的更多信息，请参阅 [使用上次访问的信息优化 AWS 中的权限](access_policies_last-accessed.md)。

## 编辑客户托管策略（控制台）
<a name="edit-customer-managed-policy-console"></a>

您可以从 AWS 管理控制台 中编辑客户管理型策略以更改在策略中定义的权限。客户托管策略最多可以具有五个版本。这是非常重要的，因为如果在五个版本以外更改托管策略，AWS 管理控制台将提示您决定删除哪个版本。也可以更改策略的默认版本，或者在编辑之前删除一个版本以避免出现提示。要了解版本的更多信息，请参阅[IAM policy 版本控制](access_policies_managed-versioning.md)。

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

**编辑客户管理型策略**

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

1. 在导航窗格中，选择**策略**。

1. 在策略列表中，选择要编辑的策略的名称。您可以使用搜索框筛选策略列表。

1. 选择**权限**选项卡，然后选择**编辑**。

1. 请执行以下操作之一：
   + 选择**可视化**选项以更改您的策略，而无需了解 JSON 语法。您可以更改策略中的每个权限块的服务、操作、资源或可选条件。也可以导入一个策略以在您的策略底部添加其他权限。完成更改后，选择**下一步**以继续。
   + 选择 **JSON** 选项，然后在 JSON 文本框中键入或粘贴文本以修改您的策略。也可以导入一个策略以在您的策略底部添加其他权限。解决[策略验证](access_policies_policy-validator.md)过程中生成的任何安全警告、错误或常规警告，然后选择**下一步**。
**注意**  
您可以随时在**可视化**和 **JSON** 编辑器选项卡之间切换。不过，如果您进行更改或在**可视化**编辑器中选择**下一步**，IAM 可能会调整您的策略结构以针对可视化编辑器进行优化。有关更多信息，请参阅 [调整策略结构](troubleshoot_policies.md#troubleshoot_viseditor-restructure)。

1. 在**查看并保存**页面上，查看**此策略中定义的权限**，然后选择**保存更改**以保存您的工作。

1. 如果管理型策略已达到最大版本数（5 个），选择**保存更改**将显示对话框。要保存您的新版本，策略最旧的非默认版本将被移除并替换为该新版本。（可选）您也可以将新版本设置为策略的默认版本。

   选择**保存更改**以保存您的新策略版本。

------

## 设置客户管理型策略的默认版本（控制台）
<a name="edit-customer-managed-policy-console-set-default-policy-version"></a>

您可以从 AWS 管理控制台 中设置客户管理型策略的默认版本。您可以使用该策略为整个组织中的权限建立一致的基准配置。该策略的所有新附件都将使用这组标准化的权限。

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

**设置客户托管策略的默认版本（控制台）**

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

1. 在导航窗格中，选择**策略**。

1. 在策略列表中，选择要设置其默认版本的策略的名称。您可以使用搜索框筛选策略列表。

1. 选择 **Policy Versions (策略版本)** 选项卡。选中要设置为默认版本的版本旁的复选框，然后选择 **Set as default**。

------

## 删除某个版本的客户管理型策略（控制台）
<a name="edit-customer-managed-policy-console-delete-policy-version"></a>

您可能需要删除客户管理型策略的某个版本，才能删除不再需要的权限或存在潜在安全风险的过时权限或不正确权限。仅维护必要的版本有助于确保始终处于五个管理型策略版本的限制范围内，从而为将来的更新和改进留出空间。您可以从 AWS 管理控制台 中删除客户管理型策略的某个版本。

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

**删除客户管理型策略的某个版本**

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

1. 在导航窗格中，选择**策略**。

1. 选择要删除其版本的客户托管策略的名称。您可以使用搜索框筛选策略列表。

1. 选择 **Policy Versions (策略版本)** 选项卡。选中要删除的版本旁边的复选框，然后选择**删除**。

1. 确认您要删除该版本，然后选择 **Delete**。

------

## 编辑内联策略（控制台）
<a name="edit-inline-policy-console"></a>

您可能需要编辑客户管理型策略以更新或完善所授予的权限，确保这些权限与组织不断变化的安全要求和访问控制需求保持一致。您可通过编辑来调整策略的 JSON 文档，并添加、修改或删除特定操作、资源或条件，以维护最低权限原则并适应环境或流程的变化。您可以从 AWS 管理控制台编辑内联策略。

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

**编辑用户、用户组或角色的内联策略**

1. 在导航窗格中，选择 **Users**（用户）、**User groups**（用户组）或 **Roles**（角色）。

1. 请选择具有要修改的策略的用户组、用户或角色的名称。然后选择**权限**选项卡并展开此策略。

1. 要编辑内联策略，请选择 **Edit Policy**。

1. 请执行以下操作之一：
   + 选择**可视化**选项以更改您的策略，而无需了解 JSON 语法。您可以更改策略中的每个权限块的服务、操作、资源或可选条件。也可以导入一个策略以在您的策略底部添加其他权限。完成更改后，选择**下一步**以继续。
   + 选择 **JSON** 选项，然后在 JSON 文本框中键入或粘贴文本以修改您的策略。也可以导入一个策略以在您的策略底部添加其他权限。解决[策略验证](access_policies_policy-validator.md)过程中生成的任何安全警告、错误或常规警告，然后选择**下一步**。要在不影响当前附加的实体的情况下保存更改，请清除 **Save as default version** 的复选框。
**注意**  
您可以随时在**可视化**和 **JSON** 编辑器选项卡之间切换。不过，如果您进行更改或在**可视化**编辑器中选择**下一步**，IAM 可能会调整您的策略结构以针对可视化编辑器进行优化。有关更多信息，请参阅 [调整策略结构](troubleshoot_policies.md#troubleshoot_viseditor-restructure)。

1. 在**审核**页面上，审核策略摘要，然后选择**保存更改**进行保存。

------

# 编辑 IAM 策略（AWS CLI）
<a name="access_policies_manage-edit-cli"></a>

[策略](access_policies.md)是一个实体；在附加到身份或资源时，策略定义了它们的权限。您可以使用 AWS Command Line Interface（AWS CLI）在 IAM 中编辑*客户管理型策略*和*内联策略*。AWS 托管策略无法编辑。AWS 账户中 IAM 资源的数量和大小是有限的。有关更多信息，请参阅 [IAM 和 AWS STS 配额](reference_iam-quotas.md)。

有关策略结构和语法的更多信息，请参阅[AWS Identity and Access Management 中的策略和权限](access_policies.md)和[IAM JSON 策略元素参考](reference_policies_elements.md)。

## 先决条件
<a name="edit-customer-managed-policy-cli-prerequisites"></a>

在更改策略的权限之前，您应查看其最近的服务级别活动。这非常重要，因为您不想删除使用它的主体（个人或应用程序）的访问权限。有关查看上次访问的信息的更多信息，请参阅 [使用上次访问的信息优化 AWS 中的权限](access_policies_last-accessed.md)。

## 编辑客户托管策略 (AWS CLI)
<a name="edit-customer-managed-policy-cli"></a>

您可以从 AWS CLI 编辑客户托管策略。

**注意**  
一个托管策略最多可以有五个版本。如果您需要在五个版本之外继续对客户托管策略进行更改，则必须首先删除一个或多个现有版本。

**编辑客户托管策略 (AWS CLI)**

1. （可选）要查看有关策略的信息，请运行以下命令：
   + 列出托管策略：[list-policies](https://docs.aws.amazon.com/cli/latest/reference/iam/list-policies.html)
   + 检索有关托管策略的详细信息：[get-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/get-policy.html)

1. （可选）要了解策略与身份之间的关系，请运行以下命令：
   + 列出托管式策略附加到的身份（IAM 用户、IAM 组和 IAM 角色）：
     + [list-entities-for-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/list-entities-for-policy.html)
   + 列出附加到身份（用户、用户组或角色）的托管策略：
     + [list-attached-user-policies](https://docs.aws.amazon.com/cli/latest/reference/iam/list-attached-user-policies.html)
     + [list-attached-group-policies](https://docs.aws.amazon.com/cli/latest/reference/iam/list-attached-group-policies.html)
     + [list-attached-role-policies](https://docs.aws.amazon.com/cli/latest/reference/iam/list-attached-role-policies.html)

1. 要编辑客户托管策略，请运行以下命令：
   + [create-policy-version](https://docs.aws.amazon.com/cli/latest/reference/iam/create-policy-version.html)

1. （可选）要验证客户托管策略，请运行以下 IAM Access Analyzer 命令：
   + [validate-policy](https://docs.aws.amazon.com/cli/latest/reference/accessanalyzer/validate-policy.html)

## 设置客户管理型策略的默认版本（AWS CLI）
<a name="edit-customer-managed-policy-cli-set-default-policy-version"></a>

您可以从 AWS CLI 中设置客户管理型策略的默认版本。

**设置客户托管策略的默认版本 (AWS CLI)**

1. （可选）要列出托管策略，请运行以下命令：
   + [list-policies](https://docs.aws.amazon.com/cli/latest/reference/iam/list-policies.html)

1. 要设置客户托管策略的默认版本，请运行以下命令：
   + [set-default-policy-version](https://docs.aws.amazon.com/cli/latest/reference/iam/set-default-policy-version.html)

## 删除客户管理型策略的某个版本（AWS CLI）
<a name="edit-customer-managed-policy-cli-delete-policy-version"></a>

您可以从 AWS CLI 中删除客户管理型策略的某个版本。

**删除客户托管策略的某个版本 (AWS CLI)**

1. （可选）要列出托管策略，请运行以下命令：
   + [list-policies](https://docs.aws.amazon.com/cli/latest/reference/iam/list-policies.html)

1. 要删除客户托管策略，请运行以下命令：
   + [delete-policy-version](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-policy-version.html)

## 编辑内联策略（AWS CLI）
<a name="edit-inline-policy-cli"></a>

您可以从 AWS CLI编辑内联策略。

**要编辑内联策略（AWS CLI）**

1. （可选）要查看有关策略的信息，请运行以下命令：
   + 要列出与身份（用户、用户组或角色）关联的内联策略：
     + [list-user-policies](https://docs.aws.amazon.com/cli/latest/reference/iam/list-user-policies.html)
     + [list-role-policies](https://docs.aws.amazon.com/cli/latest/reference/iam/list-role-policies.html)
     + [list-group-policies](https://docs.aws.amazon.com/cli/latest/reference/iam/list-group-policies.html)
   + 要检索有关内联策略的详细信息：
     + [get-user-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/get-user-policy.html)
     + [get-role-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/get-role-policy.html)
     + [get-group-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/get-group-policy.html)

1. 要编辑内联策略，请运行以下命令：
   + [put-user-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/put-user-policy.html)
   + [put-role-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/put-role-policy.html)
   + [put-group-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/put-group-policy.html)

1. （可选）要验证内联策略，请运行以下 IAM Access Analyzer 命令：
   + [validate-policy](https://docs.aws.amazon.com/cli/latest/reference/accessanalyzer/validate-policy.html)

# 编辑 IAM 策略（AWS API）
<a name="access_policies_manage-edit-api"></a>

[策略](access_policies.md)是一个实体；在附加到身份或资源时，策略定义了它们的权限。您可以使用 AWS API 在 IAM 中编辑*客户管理型策略*和*内联策略*。AWS 托管策略无法编辑。AWS 账户中 IAM 资源的数量和大小是有限的。有关更多信息，请参阅 [IAM 和 AWS STS 配额](reference_iam-quotas.md)。

有关策略结构和语法的更多信息，请参阅[AWS Identity and Access Management 中的策略和权限](access_policies.md)和[IAM JSON 策略元素参考](reference_policies_elements.md)。

## 先决条件
<a name="edit-customer-managed-policy-api-prerequisites"></a>

在更改策略的权限之前，您应查看其最近的服务级别活动。这非常重要，因为您不想删除使用它的主体（个人或应用程序）的访问权限。有关查看上次访问的信息的更多信息，请参阅 [使用上次访问的信息优化 AWS 中的权限](access_policies_last-accessed.md)。

## 编辑客户托管策略 (AWS API)
<a name="edit-customer-managed-policy-api"></a>

您可以使用 AWS API 编辑客户托管策略。

**注意**  
一个托管策略最多可以有五个版本。如果您需要在五个版本之外继续对客户托管策略进行更改，则必须首先删除一个或多个现有版本。

**编辑客户托管策略 (AWS API)**

1. （可选）要查看有关策略的信息，请调用以下操作：
   + 列出托管策略：[ListPolicies](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListPolicies.html)
   + 检索有关托管策略的详细信息：[GetPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetPolicy.html)

1. （可选）要了解策略与身份之间的关系，请调用以下操作：
   + 列出托管式策略附加到的身份（IAM 用户、IAM 组和 IAM 角色）：
     + [ListEntitiesForPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListEntitiesForPolicy.html)
   + 列出附加到身份（用户、用户组或角色）的托管策略：
     + [ListAttachedUserPolicies](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAttachedUserPolicies.html)
     + [ListAttachedGroupPolicies](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAttachedGroupPolicies.html)
     + [ListAttachedRolePolicies](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAttachedRolePolicies.html)

1. 要编辑客户托管策略，请调用以下操作：
   + [CreatePolicyVersion](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreatePolicyVersion.html)

1. （可选）要验证客户托管策略，请调用以下 IAM Access Analyzer 操作：
   + [ValidatePolicy](https://docs.aws.amazon.com/access-analyzer/latest/APIReference/API_ValidatePolicy.html)

## 设置客户管理型策略的默认版本（AWS API）
<a name="edit-customer-managed-policy-api-set-default-policy-version"></a>

您可以从 AWS API 中设置客户管理型策略的默认版本。

**设置客户托管策略的默认版本 (AWS API)**

1. （可选）要列出托管策略，请调用以下操作：
   + [ListPolicies](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListPolicies.html)

1. 要设置客户托管策略的默认版本，请调用以下操作：
   + [SetDefaultPolicyVersion](https://docs.aws.amazon.com/IAM/latest/APIReference/API_SetDefaultPolicyVersion.html)

## 删除客户管理型策略的某个版本（AWS API）
<a name="edit-customer-managed-policy-api-delete-policy-version"></a>

您可以从 AWS API 中删除客户管理型策略的某个版本。

**删除客户托管策略的某个版本 (AWS API)**

1. （可选）要列出托管策略，请调用以下操作：
   + [ListPolicies](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListPolicies.html)

1. 要删除客户托管策略，请调用以下操作：
   + [DeletePolicyVersion](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeletePolicyVersion.html)

## 编辑内联策略（AWS API）
<a name="edit-inline-policy-api"></a>

您可以从 AWS API 中编辑内联策略。

**要编辑内联策略（AWS API）**

1. （可选）要查看有关内联策略的信息，请运行以下操作：
   + 要列出与身份（用户、用户组或角色）关联的内联策略：
     + [ListUserPolicies](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListUserPolicies.html)
     + [ListRolePolicies](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListRolePolicies.html)
     + [ListGroupPolicies](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListGroupPolicies.html)
   + 要检索有关内联策略的详细信息：
     + [GetUserPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetUserPolicy.html)
     + [GetRolePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetRolePolicy.html)
     + [GetGroupPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetGroupPolicy.html)

1. 要编辑内联策略，请运行以下操作：
   + [PutUserPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_PutUserPolicy.html)
   + [PutRolePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_PutRolePolicy.html)
   + [PutGroupPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_PutGroupPolicy.html)

1. （可选）要验证内联策略，请运行以下 IAM Access Analyzer 操作：
   + [ValidatePolicy](https://docs.aws.amazon.com/access-analyzer/latest/APIReference/API_ValidatePolicy.html)