本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
对 WorkSpaces 进行身份和访问管理
默认情况下,IAM 用户无权管理 WorkSpaces 资源和操作。要允许 IAM 用户管理 WorkSpaces 资源,您必须创建一个 IAM 策略以向他们显式授予权限,然后将此策略附加到需要这些权限的 IAM 用户或组。
要提供访问权限,请为您的用户、组或角色添加权限:
-
通过身份提供商在 IAM 中托管的用户:
创建适用于身份联合验证的角色。按照《IAM 用户指南》中为第三方身份提供商创建角色(联合身份验证)的说明进行操作。
-
IAM 用户:
-
创建您的用户可以担任的角色。按照《IAM 用户指南》中为 IAM 用户创建角色的说明进行操作。
-
(不推荐使用)将策略直接附加到用户或将用户添加到用户组。按照《IAM 用户指南》中向用户添加权限(控制台)中的说明进行操作。
-
有关 IAM 策略的更多信息,请参阅《IAM 用户指南》中的策略和权限。
WorkSpaces 还会创建一个 IAM 角色 workspaces_DefaultRole
,该角色允许 WorkSpaces 服务访问所需的资源。
有关 IAM 的更多信息,请参阅身份和访问管理 (IAM)
有关可帮助您创建 IAM 策略的工具,请参阅 Amazon 策略生成器
注意
Amazon WorkSpaces 不支持将 IAM 凭证预调配到 WorkSpace 中(例如使用实例配置文件)。
目录
策略示例
以下示例显示了您可用于控制 IAM 用户对 Amazon WorkSpaces 的权限的策略语句。
例 1:执行所有 WorkSpaces 任务
以下策略语句将授予 IAM 用户执行所有 WorkSpaces 任务的权限,包括创建和管理目录。它还授予运行快速设置过程的权限。
尽管 Amazon WorkSpaces 在使用 API 和命令行工具时完全支持 Action
和 Resource
元素,但要使用Amazon Web Services Management Console中的 Amazon WorkSpaces,IAM 用户必须拥有使用以下操作和资源的权限:
-
操作:
workspaces:*"
和"ds:*"
-
资源:
"Resource": "*"
以下策略示例演示了如何允许 IAM 用户使用Amazon Web Services Management Console中的 Amazon WorkSpaces。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "workspaces:*", "ds:*", "iam:GetRole", "iam:CreateRole", "iam:PutRolePolicy", "iam:CreatePolicy", "iam:AttachRolePolicy", "iam:ListRoles", "kms:ListAliases", "kms:ListKeys", "ec2:CreateVpc", "ec2:CreateSubnet", "ec2:CreateNetworkInterface", "ec2:CreateInternetGateway", "ec2:CreateRouteTable", "ec2:CreateRoute", "ec2:CreateTags", "ec2:CreateSecurityGroup", "ec2:DescribeInternetGateways", "ec2:DescribeSecurityGroups", "ec2:DescribeRouteTables", "ec2:DescribeVpcs", "ec2:DescribeSubnets", "ec2:DescribeNetworkInterfaces", "ec2:DescribeAvailabilityZones", "ec2:AttachInternetGateway", "ec2:AssociateRouteTable", "ec2:AuthorizeSecurityGroupEgress", "ec2:AuthorizeSecurityGroupIngress", "ec2:DeleteSecurityGroup", "ec2:DeleteNetworkInterface", "ec2:RevokeSecurityGroupEgress", "ec2:RevokeSecurityGroupIngress", "workdocs:RegisterDirectory", "workdocs:DeregisterDirectory", "workdocs:AddUserToGroup" ], "Resource": "*" }, { "Sid": "iamPassRole", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "*", "Condition": { "StringEquals": { "iam:PassedToService": "workspaces.amazonaws.com" } } } ] }
例 2:执行 WorkSpace 特定任务
以下策略语句将授予 IAM 用户执行 WorkSpace 特定任务的权限,比如启动和删除 WorkSpaces。在策略语句中,ds:*
操作授予广泛的权限,这包括对账户中所有目录服务对象的完整控制权限。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "workspaces:*", "ds:*", "iam:PutRolePolicy" ], "Resource": "*" } ] }
要同时授予用户在 WorkSpaces 中为用户启用 Amazon WorkDocs 的权限,请添加下例所示的 workdocs
操作。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "workspaces:*", "ds:*", "workdocs:AddUserToGroup" ], "Resource": "*" } ] }
要同时授予用户使用“启动 WorkSpace 向导”的权限,请添加下例所示的 kms
操作。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "workspaces:*", "ds:*", "workdocs:AddUserToGroup", "kms:ListAliases", "kms:ListKeys" ], "Resource": "*" } ] }
例 3:为 BYOL WorkSpaces 执行所有 WorkSpaces 任务
以下策略语句授予 IAM 用户执行所有 WorkSpaces 任务(包括创建自带许可 (BYOL) WorkSpaces 所需的 Amazon EC2 任务)的权限。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "workspaces:*", "ds:*", "iam:GetRole", "iam:CreateRole", "iam:PutRolePolicy", "kms:ListAliases", "kms:ListKeys", "ec2:CreateVpc", "ec2:CreateSubnet", "ec2:CreateNetworkInterface", "ec2:CreateInternetGateway", "ec2:CreateRouteTable", "ec2:CreateRoute", "ec2:CreateTags", "ec2:CreateSecurityGroup", "ec2:DescribeImages", "ec2:ModifyImageAttribute", "ec2:DescribeInternetGateways", "ec2:DescribeSecurityGroups", "ec2:DescribeRouteTables", "ec2:DescribeVpcs", "ec2:DescribeSubnets", "ec2:DescribeNetworkInterfaces", "ec2:DescribeAvailabilityZones", "ec2:AttachInternetGateway", "ec2:AssociateRouteTable", "ec2:AuthorizeSecurityGroupEgress", "ec2:AuthorizeSecurityGroupIngress", "ec2:DeleteSecurityGroup", "ec2:DeleteNetworkInterface", "ec2:RevokeSecurityGroupEgress", "ec2:RevokeSecurityGroupIngress", "workdocs:RegisterDirectory", "workdocs:DeregisterDirectory", "workdocs:AddUserToGroup" ], "Resource": "*" }, { "Sid": "iamPassRole", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "*", "Condition": { "StringEquals": { "iam:PassedToService": "workspaces.amazonaws.com" } } } ] }
在 IAM 策略中指定 WorkSpaces 资源
要在策略语句的 Resource
元素中指定 WorkSpaces 资源,请使用资源的 Amazon 资源名称 (ARN)。通过允许或拒绝授予使用在 IAM 策略语句的 Action
元素中指定的 API 操作的权限,您可以控制对 WorkSpaces 资源的访问。WorkSpaces 为 WorkSpaces、捆绑包、IP 组和目录定义 ARN。
WorkSpace ARN
WorkSpace ARN 具有以下示例中显示的语法。
arn:aws:workspaces:region
:account_id
:workspace/workspace_identifier
- 区域
-
WorkSpace 所在的区域(例如,
us-east-1
)。 - account_id
-
Amazon 账户的 ID,不含连字符(例如,
123456789012
)。 - workspace_identifier
-
WorkSpace 的 ID (例如,
ws-a1bcd2efg
)。
以下是用于标识某个特定 WorkSpace 的策略语句的 Resource
元素的格式。
"Resource": "arn:aws:workspaces:region
:account_id
:workspace/workspace_identifier
"
您可以使用 *
通配符来指定属于特定区域中特定账户的所有 WorkSpaces。
映像 ARN
WorkSpace 映像 ARN 具有以下示例中显示的语法。
arn:aws:workspaces:region
:account_id
:workspaceimage/image_identifier
- 区域
-
WorkSpace 映像所在的区域(例如,
us-east-1
)。 - account_id
-
Amazon 账户的 ID,不含连字符(例如,
123456789012
)。 - bundle_identifier
-
WorkSpace 映像的 ID (例如,
wsi-a1bcd2efg
)。
以下是用于标识某个特定映像的策略语句的 Resource
元素的格式。
"Resource": "arn:aws:workspaces:region
:account_id
:workspaceimage/image_identifier
"
您可以使用 *
通配符来指定属于特定区域中特定账户的所有映像。
服务包 ARN
服务包 ARN 具有以下示例中显示的语法。
arn:aws:workspaces:region
:account_id
:workspacebundle/bundle_identifier
- 区域
-
WorkSpace 所在的区域(例如,
us-east-1
)。 - account_id
-
Amazon 账户的 ID,不含连字符(例如,
123456789012
)。 - bundle_identifier
-
WorkSpace 服务包的 ID (例如,
wsb-a1bcd2efg
)。
以下是用于标识某个特定服务包的策略语句的 Resource
元素的格式。
"Resource": "arn:aws:workspaces:region
:account_id
:workspacebundle/bundle_identifier
"
您可以使用 *
通配符来指定属于特定区域中特定账户的所有捆绑包。
IP 组 ARN
IP 组 ARN 具有以下示例中显示的语法。
arn:aws:workspaces:region
:account_id
:workspaceipgroup/ipgroup_identifier
- 区域
-
WorkSpace 所在的区域(例如,
us-east-1
)。 - account_id
-
Amazon 账户的 ID,不含连字符(例如,
123456789012
)。 - ipgroup_identifier
-
IP 组的 ID(例如
wsipg-a1bcd2efg
)。
以下是用于标识某个特定 IP 组的策略语句的 Resource
元素的格式。
"Resource": "arn:aws:workspaces:region
:account_id
:workspaceipgroup/ipgroup_identifier
"
您可以使用 *
通配符来指定属于特定区域中特定账户的所有 IP 组。
目录 ARN
目录 ARN 具有以下示例中显示的语法。
arn:aws:workspaces:region
:account_id
:directory/directory_identifier
- 区域
-
WorkSpace 所在的区域(例如,
us-east-1
)。 - account_id
-
Amazon 账户的 ID,不含连字符(例如,
123456789012
)。 - directory_identifier
-
目录的 ID(例如
d-12345a67b8
)。
以下是用于标识某个特定目录的策略语句的 Resource
元素的格式。
"Resource": "arn:aws:workspaces:region
:account_id
:directory/directory_identifier
"
您可以使用 *
通配符来指定属于特定区域中特定账户的所有目录。
连接别名 ARN
连接别名 ARN 具有以下示例中显示的语法。
arn:aws:workspaces:region
:account_id
:connectionalias/connectionalias_identifier
- 区域
-
连接别名所在的区域(例如,
us-east-1
)。 - account_id
-
Amazon 账户的 ID,不含连字符(例如,
123456789012
)。 - connectionalias_identifier
-
连接别名的 ID(例如,
wsca-12345a67b8
)。
以下是用于标识某个特定连接别名的策略语句的 Resource
元素的格式。
"Resource": "arn:aws:workspaces:region
:account_id
:connectionalias/connectionalias_identifier
"
您可以使用 *
通配符来指定属于特定区域中特定账户的所有连接别名。
不支持资源级权限的 API 操作
您不能使用以下 API 操作指定资源 ARN:
AssociateIpGroups
CreateIpGroup
CreateTags
DeleteTags
DeleteWorkspaceImage
DescribeAccount
DescribeAccountModifications
DescribeIpGroups
DescribeTags
DescribeWorkspaceDirectories
DescribeWorkspaceImages
DescribeWorkspaces
DescribeWorkspacesConnectionStatus
DisassociateIpGroups
ImportWorkspaceImage
ListAvailableManagementCidrRanges
ModifyAccount
对于不支持资源级权限的 API 操作,必须指定以下示例中显示的资源语句。
"Resource": "*"
不支持对共享资源进行账号级限制的 API 操作
对于以下 API 操作,当资源不归账户所有时,您无法在资源 ARN 中指定账户 ID:
AssociateConnectionAlias
CopyWorkspaceImage
DisassociateConnectionAlias
对于这些 API 操作,只有当该账户拥有要处理的资源时,您才能在资源 ARN 中指定账户 ID。当账户不拥有资源时,您必须为账户 ID 指定 *
,如以下示例中所示。
"arn:aws:workspaces:
region
:*:resource_type
/resource_identifier
"
创建 workspaces_DefaultRole 角色
在使用 API 注册目录之前,必须验证名为 workspaces_DefaultRole
的角色是否存在。此角色由快速设置功能创建,或者如果您使用Amazon Web Services Management Console启动 WorkSpace,则它会向 Amazon WorkSpaces 授予代表您访问特定 Amazon 资源的权限。如果此角色不存在,您可以使用以下程序创建它。
创建 workspaces_DefaultRole 角色
-
登录Amazon Web Services Management Console,然后通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/
。 -
在左侧的导航窗格中,选择角色。
-
选择 Create role(创建角色)。
-
在 Select type of trusted entity(选择受信任实体的类型)下,选择 Another Amazon 账户(其它亚马逊云科技账户)。
-
对于账户 ID,请输入没有连字符或空格的账户 ID。
-
对于选项,请勿指定多重验证 (MFA)。
-
选择Next: Permissions(下一步: 权限)。
-
在附加权限策略页面上,选择 Amazon 托管策略 AmazonWorkSpacesServiceAccess 和 AmazonWorkSpacesSelfServiceAccess。
-
在设置权限边界下,建议您不要使用权限边界,因为可能会与附加到此角色的策略发生冲突。此类冲突可能会阻止角色的某些必要权限。
-
请选择下一步:标签。
-
在 Add tags (optional) (添加标签(可选)) 页面上,根据需要添加标签。
-
选择 Next: Review(下一步: 审核)。
-
在审核页面上,对于角色名称,输入
workspaces_DefaultRole
。 -
(可选)对于角色描述,请输入描述。
-
请选择 Create Role(创建角色)。
-
在 workspaces_DefaultRole 角色的摘要页面上,选择信任关系选项卡。
-
在信任关系选项卡上,选择编辑信任关系。
-
在编辑信任关系页面上,将现有策略语句替换为以下语句。
{ "Statement": [ { "Effect": "Allow", "Principal": { "Service": "workspaces.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
-
选择 Update Trust Policy(更新信任策略)。
创建 AmazonWorkSpacesPCAAccess 服务角色
在用户使用基于证书的身份验证方式登录之前,您必须先验证名为 AmazonWorkSpacesPCAAccess
的角色是否存在。此角色是在您使用Amazon Web Services Management Console对目录进行基于证书的身份验证时创建的,它授予 Amazon WorkSpaces 代表您访问 Amazon Private CA 资源的权限。如果由于您未使用控制台管理基于证书的身份验证而导致此角色不存在,则您可以使用以下步骤创建此角色。
使用 Amazon CLI 创建 AmazonWorkSpacesPCAAccess 服务角色
-
使用以下文本创建名为
AmazonWorkSpacesPCAAccess.json
的 JSON 文件。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "prod.euc.ecm.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
-
根据需要调整
AmazonWorkSpacesPCAAccess.json
路径并运行以下 Amazon CLI 命令来创建服务角色,同时附加 AmazonWorkspacesPCAAccess 托管策略。aws iam create-role --path /service-role/ --role-name AmazonWorkSpacesPCAAccess --assume-role-policy-document file://AmazonWorkSpacesPCAAccess.json
aws iam attach-role-policy —role-name AmazonWorkSpacesPCAAccess —policy-arn arn:aws:iam::aws:policy/AmazonWorkspacesPCAAccess