AWS Identity and Access Management
用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

管理 IAM 资源的策略示例

以下 IAM 策略示例允许用户执行与管理 IAM 用户、组和凭证相关的任务。这包括允许用户管理自己的密码、访问密钥和多重验证 (MFA) 设备的策略。

有关允许用户执行对其他 AWS 服务(如 Amazon S3、Amazon EC2 和 DynamoDB)的任务的策略的示例,请参阅 示例策略

允许用户管理自己的密码 (从“My Password”页面)

如果账户的密码策略设置为允许所有用户更改自己的密码,则不需要为任何用户或群组提供相关权限。所有用户都可访问 AWS 管理控制台 中的 “My Password”页面来更改自己的密码。

如果账户的密码策略设置为允许所有用户更改自己的密码,您可以将以下策略附加到选定的用户或群组,从而允许这些用户只能更改自己的密码。此策略仅允许用户在控制台中使用特殊的 “My Password”页面,并未授予用户通过 IAM 控制台中的控制面板工作的权限。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:GetAccountPasswordPolicy", "Resource": "*" }, { "Effect": "Allow", "Action": "iam:ChangePassword", "Resource": "arn:aws-cn:iam::account-id-without-hyphens:user/${aws:username}" } ] }

如果用户不使用控制台更改其密码,则他们不需要 iam:GetAccountPasswordPolicy 权限。用户可以改为从 AWS CLI 运行 aws iam change-password 命令,或使用 ChangePassword 操作发出请求。

有关使用 IAM 控制台中的 Users (用户) 部分允许选定用户管理密码的信息,请参阅下一部分。

允许用户管理自己的密码、访问密钥和 SSH 密钥

以下策略允许用户在 AWS 管理控制台中执行这些操作:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:*LoginProfile", "iam:*AccessKey*", "iam:*SSHPublicKey*" ], "Resource": "arn:aws-cn:iam::account-id-without-hyphens:user/${aws:username}" }, { "Effect": "Allow", "Action": [ "iam:ListAccount*", "iam:GetAccountSummary", "iam:GetAccountPasswordPolicy", "iam:ListUsers" ], "Resource": "*" } ] }

上述策略中的操作包含通配符 (例如 iam:*LoginProfileiam:*AccessKey*iam:*SSHPublicKey*)。这种方法可以轻松包含一组相关操作。如果要删除任一相关操作的权限,必须改为列出每个单独的操作。例如,如果不想让用户能够删除密码,则必须分别列出 iam:CreateLoginProfileiam:GetLoginProfileiam:UpdateLoginProfile,并忽略 iam:DeleteLoginProfile

通过使用 Statement 数组中的第二个元素 (包括 iam:GetAccountSummaryiam:GetAccountPasswordPolicyiam:ListAccount*iam:ListUsers 权限),用户可以在 IAM 控制台控制面板上查看特定信息,例如,是否启用了密码策略,账户具有多少个组,账户 URL 和别名是什么,等等。例如,GetAccountSummary 操作返回一个对象,该对象包含有关稍后在 IAM 控制台控制面板上显示的账户的信息集合。

以下策略与前一个策略类似,但不包含仅在控制台访问时需要的权限。此策略允许用户使用 AWS CLI、Windows PowerShell 工具、AWS 软件开发工具包或 IAM HTTP 查询 API 管理自己的凭证。

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "iam:*LoginProfile", "iam:*AccessKey*", "iam:*SSHPublicKey*" ], "Resource": "arn:aws-cn:iam::account-id-without-hyphens:user/${aws:username}" } }

允许用户列出账户的组、用户、策略等,以供报告之用

以下策略允许用户调用以字符串 GetList 开头的任何 IAM 操作。

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "iam:Get*", "iam:List*" ], "Resource": "*" } }

使用 Get*List* 操作的好处是,如果日后要向 IAM 中添加新型实体,则当策略准许对 Get*List* 所有操作进行访问时,将自动允许用户列出这些新实体。

允许用户管理群组的成员资格

以下策略允许用户更新名为 MarketingGroup 的组的成员资格。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ViewGroups", "Effect": "Allow", "Action": [ "iam:ListGroups", "iam:GetUser", "iam:ListGroupsForUser" ], "Resource": "*" }, { "Sid": "ViewEditThisGroup", "Effect": "Allow", "Action": [ "iam:AddUserToGroup", "iam:RemoveUserFromGroup", "iam:GetGroup" ], "Resource": "arn:aws:iam::*:group/MarketingGroup" } ] }

允许用户管理 IAM 用户

以下策略允许用户执行所有与管理 IAM 用户相关的任务,但是不允许对其他实体执行操作,如创建组或策略。允许的操作包括这些:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowUsersToPerformUserActions", "Effect": "Allow", "Action": [ "iam:ListPolicies", "iam:GetPolicy", "iam:UpdateUser", "iam:AttachUserPolicy", "iam:ListEntitiesForPolicy", "iam:DeleteUserPolicy", "iam:DeleteUser", "iam:ListUserPolicies", "iam:CreateUser", "iam:RemoveUserFromGroup", "iam:AddUserToGroup", "iam:GetUserPolicy", "iam:ListGroupsForUser", "iam:PutUserPolicy", "iam:ListAttachedUserPolicies", "iam:ListUsers", "iam:GetUser", "iam:DetachUserPolicy" ], "Resource": "*" }, { "Sid": "AllowUsersToSeeStatsOnIAMConsoleDashboard", "Effect": "Allow", "Action": [ "iam:GetAccount*", "iam:ListAccount*" ], "Resource": "*" } ] }

上述策略中包含的很多权限允许用户在 AWS 管理控制台中执行任务。仅从 AWS CLIAWS 软件开发工具包或 IAM HTTP 查询 API 执行与用户相关的任务的用户可能不需要特定权限。例如,如果用户已知道从用户分离的策略的 ARN,则不需要 iam:ListAttachedUserPolicies 权限。用户所需权限的确切列表取决于用户管理其他用户时必须执行的任务。

以下策略中的权限允许通过 AWS 管理控制台访问用户任务:

  • iam:GetAccount*

  • iam:ListAccount*

允许用户设置账户密码策略

您可以授予某些用户获取和更新您的 AWS 账户的密码策略的权限。以下示例策略授予这些权限。

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "iam:GetAccountPasswordPolicy", "iam:UpdateAccountPasswordPolicy" ], "Resource": "*" } }

允许用户生成和检索 IAM 证书报告

您可以向用户授予权限以生成和下载一个报告,该报告列出您的 AWS 账户中所有用户及其各个凭证状态(包括密码、访问密钥、MFA 设备和签名证书)。以下示例策略授予这些权限。

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "iam:GenerateCredentialReport", "iam:GetCredentialReport" ], "Resource": "*" } }

有关证书报告的更多信息,请参阅获取您 AWS 账户的证书报告

仅允许用户管理自己的虚拟 MFA 设备

虚拟 MFA 设备是提供一次性密码的设备的软件实现。虚拟 MFA 设备承载于物理硬件设备 (通常为智能手机) 上。要配置虚拟 MFA 设备,您必须能够访问承载虚拟 MFA 设备的物理设备。如果您的用户在其手机上的智能手机应用程序中创建虚拟 MFA 设备,您可能会希望让他们自行配置这些设备。有关通过 IAM 使用虚拟 MFA 设备的更多信息,请参阅启用虚拟多重验证 (MFA) 设备(控制台)

以下策略允许用户从 AWS 管理控制台或使用任意命令行工具来配置和管理其虚拟 MFA 设备。该策略仅允许进行 MFA 身份验证的用户停用并删除其虚拟 MFA 设备。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowUsersToCreateEnableResyncDeleteTheirOwnVirtualMFADevice", "Effect": "Allow", "Action": [ "iam:CreateVirtualMFADevice", "iam:EnableMFADevice", "iam:ResyncMFADevice", "iam:DeleteVirtualMFADevice" ], "Resource": [ "arn:aws-cn:iam::account-id-without-hyphens:mfa/${aws:username}", "arn:aws-cn:iam::account-id-without-hyphens:user/${aws:username}" ] }, { "Sid": "AllowUsersToDeactivateTheirOwnVirtualMFADevice", "Effect": "Allow", "Action": [ "iam:DeactivateMFADevice" ], "Resource": [ "arn:aws-cn:iam::account-id-without-hyphens:mfa/${aws:username}", "arn:aws-cn:iam::account-id-without-hyphens:user/${aws:username}" ], "Condition": { "Bool": { "aws:MultiFactorAuthPresent": true } } }, { "Sid": "AllowUsersToListMFADevicesandUsersForConsole", "Effect": "Allow", "Action": [ "iam:ListMFADevices", "iam:ListVirtualMFADevices", "iam:ListUsers" ], "Resource": "*" } ] }

注意

操作 iam:DeleteVirtualMFADevice 包含在第一条而不是第二条语句中,因此 受 MFA 条件检查的影响。这不会造成安全问题,因为您只能在停用 MFA 设备后才能删除它,而要执行停用操作,用户必须先进行 MFA 身份验证。这可防止以下情况的发生:您在 Create MFA Device 向导创建设备后但尚未验证两个代码并将其关联到用户之前取消向导。由于此时用户尚未进行 MFA 身份验证,如果策略要求必须经过 MFA 身份验证才能删除设备的话,向导 (以该用户权限执行) 将无法清除该设备。

允许所有 IAM 操作 (管理员访问)

您可以授予某些用户在 IAM 中执行所有操作的管理员权限,包括管理密码、访问密钥、MFA 设备和用户凭证。以下示例策略授予这些权限。

警告

当您向用户授予对 IAM 的完全访问权时,对用户可以向自己或他人授予的权限没有限制。用户可以创建新的 IAM 实体 (用户或角色) 并授予这些实体对您 AWS 账户中所有资源的完全访问权限。您向用户授予对 IAM 的完全访问权限时,实际上是向用户授予对您 AWS 账户中所有资源的完全访问权限。其中包括删除所有资源的权限。您应该仅将这些权限授予信任的管理员,还应对这些管理员强制采用 Multi-Factor Authentication (MFA)。

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "iam:*", "Resource": "*" } }