适用于的身份和访问管理 WorkSpaces - 亚马逊 WorkSpaces
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

适用于的身份和访问管理 WorkSpaces

原定设置情况下,IAM 用户不拥有访问 WorkSpaces 资源和操作的权限。要允许 IAM 用户管理 WorkSpaces 资源,您必须创建一个 IAM 策略以明确向他们授予权限,然后将此策略附加到需要这些权限的 IAM 用户或组。

要提供访问权限,请为您的用户、组或角色添加权限:

有关 IAM 策略的更多一般信息,请参阅 IAM 用户指南中的策略与权限

WorkSpaces 还创建 IAM 角色workspaces_DefaultRole,允许 WorkSpaces 服务访问所需的资源。

有关 IAM 的更多信息,请参阅Ident ity and Access Management (IAM) 和 IAM 用户指南。您可在 IAM 用户指南中适用于 IAM 权限策略的 WorkSpaces特定资源、操作和条件上下文键以在 IAM 权限策略 WorkSpaces中使用的特定资源、操作和条件上下文键

有关帮助您创建 IAM 策略的工具,请参阅Amazon策略生成器。您也可以使用 IAM 策略模拟器测试策略是允许还是拒绝对的特定请求Amazon。

注意

Amazon WorkSpaces 不支持将 IAM 证书预置到 WorkSpace (例如使用实例配置文件)。

示例策略

以下示例显示了您可用于控制 IAM 用户对亚马逊权限的策略语句 WorkSpaces。

例 1:执行所有 WorkSpaces 任务

以下政策声明授予 IAM 用户执行所有 WorkSpaces 任务的权限,包括创建和管理目录。它还授予运行快速设置过程的权限。

尽管 Amazon 在Action使用 API 和命令行工具时 WorkSpaces 完全支持和Resource元素,但要使用 Amazon WorkSpaces ,IAM 用户必须拥有以下操作和资源的权限:Amazon Web Services Management Console

  • 操作:”workspaces:*""ds:*"

  • 资源: "Resource": "*"

以下示例策略显示了如何允许 IAM 用户 WorkSpaces 从中使用亚马逊Amazon Web Services Management Console。

{ "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: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": "*" } ] }

要同时授予用户 WorkDocs 为其中的用户启用 Amazon 的权限 WorkSpaces,请添加以下示例中显示的workdocs操作。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "workspaces:*", "ds:*", "workdocs:AddUserToGroup" ], "Resource": "*" } ] }

要同时授予用户使用启动 WorkSpaces 向导的权限,请添加如下示例所示的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) 所需的 Amazon EC2 任务 WorkSpaces。

{ "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

的 ID WorkSpace (例如,ws-a1bcd2efg)。

以下是标识特定Resource内容的政策声明元素的格式 WorkSpace。

"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_标识符

连接别名的 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"

创建工作空间_DefaultRole 角色

在使用 API 注册目录之前,必须验证名为的角色是否workspaces_DefaultRole存在。此角色由 Quick Setup 创建,或者如果您 WorkSpace 使用 Quick Setup 启动,它会授予亚马逊代表您访问特定Amazon资源的 WorkSpaces 权限。Amazon Web Services Management Console如果此角色不存在,请使用以下程序创建它。

创建 workspaces_DefaultRole 角色
  1. 登录Amazon Web Services Management Console,然后通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

  2. 在左侧的导航窗格中,选择角色

  3. 选择 Create role(创建角色)。

  4. Select type of trusted entity(选择受信任实体的类型)下,选择 Another Amazon 账户(其它亚马逊云科技账户)。

  5. 对于账户 ID,请输入没有连字符或空格的账户 ID。

  6. 对于选项,请勿指定多重验证 (MFA)。

  7. 选择Next: Permissions(下一步: 权限)

  8. 附加权限策略页面上,选择Amazon托管策略AmazonWorkSpacesServiceAccessAmazonWorkSpacesSelfServiceAccess

  9. 在 “设置权限边界” 下,我们建议您不要使用权限边界,因为这可能会与附加到该角色的策略发生冲突。此类冲突可能会阻止角色的某些必要权限。

  10. 请选择下一步:标签

  11. Add tags (optional) (添加标签(可选)) 页面上,根据需要添加标签。

  12. 选择 Next: Review(下一步: 审核)

  13. 审核页面上,对于角色名称,输入 workspaces_DefaultRole

  14. (可选)对于角色描述,请输入描述。

  15. 请选择 Create Role(创建角色)。

  16. 在 workspaces_DefaultRole 角色的 “摘要” 页面上,选择 “信任关系” 选项卡。

  17. 信任关系选项卡上,选择编辑信任关系

  18. 编辑信任关系页面上,将现有策略语句替换为以下语句。

    { "Statement": [ { "Effect": "Allow", "Principal": { "Service": "workspaces.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  19. 选择 Update Trust Policy(更新信任策略)。

创建 AmazonWorkSpaces pcaAccess 服务角色

在用户使用基于证书的身份验证登录之前,必须验证名为的角色是否AmazonWorkSpacesPCAAccess存在。此角色是在您使用在目录上启用基于证书的身份验证时创建的Amazon Web Services Management Console,它会授予亚马逊代表您访问Amazon Private CA资源的 WorkSpaces权限。如果由于您未使用控制台管理基于证书的身份验证而导致此角色不存在,则可以使用以下过程创建该角色。

使用 AmazonWorkSpaces pcaAccess 服务角色创建Amazon CLI
  1. 创建一个 JSON 文件,AmazonWorkSpacesPCAAccess.json包含以下文本:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "prod.euc.ecm.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  2. 根据需要调整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