对 WorkSpaces 进行身份和访问管理
默认情况下,IAM 用户无权管理 WorkSpaces 资源和操作。要允许 IAM 用户管理 WorkSpaces 资源,您必须创建一个 IAM 策略以向他们显式授予权限,然后将此策略附加到需要这些权限的 IAM 用户或组。
注意
Amazon WorkSpaces 不支持将 IAM 凭证预调配到 WorkSpace 中(例如使用实例配置文件)。
要提供访问权限,请为您的用户、组或角色添加权限:
-
AWS IAM Identity Center 中的用户和群组:
创建权限集合。按照《AWS IAM Identity Center 用户指南》中创建权限集的说明进行操作。
-
通过身份提供商在 IAM 中托管的用户:
创建适用于身份联合验证的角色。按照《IAM 用户指南》中针对第三方身份提供商创建角色(联合身份验证)的说明进行操作。
-
IAM 用户:
-
创建您的用户可以担任的角色。按照《IAM 用户指南》中为 IAM 用户创建角色的说明进行操作。
-
(不推荐使用)将策略直接附加到用户或将用户添加到用户组。按照《IAM 用户指南》中向用户添加权限(控制台)中的说明进行操作。
-
以下是 IAM 的其他资源:
-
有关 IAM 策略的更多信息,请参阅《IAM 用户指南》中的策略和权限。
-
有关 IAM 的更多信息,请参阅身份和访问管理 (IAM)
和 IAM 用户指南。 -
有关可在 IAM 权限策略中使用的 WorkSpaces 特定资源、操作和条件上下文键的更多信息,请参阅《IAM 用户指南》中的有关 Amazon WorkSpaces 的操作、资源和条件键。
-
有关可帮助您创建 IAM 策略的工具,请参阅 AWS 策略生成器
。您还可以使用 IAM Policy Simulator 来测试策略是允许还是拒绝对 AWS 的特定请求。
目录
策略示例
以下示例显示了您可用于控制 IAM 用户对 Amazon WorkSpaces 的权限的策略语句。
以下策略语句将授予 IAM 用户执行 WorkSpaces 个人任务和池任务的权限。
以下策略语句将授予 IAM 用户执行所有 WorkSpaces 个人任务的权限。
尽管 Amazon WorkSpaces 在使用 API 和命令行工具时完全支持 Action 和 Resource 元素,但要使用AWS 管理控制台中的 Amazon WorkSpaces,IAM 用户必须拥有使用以下操作和资源的权限:
-
操作:
"ds:*" -
资源:
"Resource": "*"
以下策略示例演示了如何允许 IAM 用户使用AWS 管理控制台中的 Amazon WorkSpaces。
以下策略语句将授予 IAM 用户执行所有 WorkSpaces Pools 任务的权限。
以下策略语句授予 IAM 用户执行所有 WorkSpaces 任务(包括创建自带许可 (BYOL) WorkSpaces 所需的 Amazon EC2 任务)的权限。
在 IAM 策略中指定 WorkSpaces 资源
要在策略语句的 Resource 元素中指定 WorkSpaces 资源,请使用资源的 Amazon 资源名称 (ARN)。通过允许或拒绝授予使用在 IAM 策略语句的 Action 元素中指定的 API 操作的权限,您可以控制对 WorkSpaces 资源的访问。WorkSpaces 为 WorkSpaces、捆绑包、IP 组和目录定义 ARN。
WorkSpace ARN 具有以下示例中显示的语法。
arn:aws:workspaces:region:account_id:workspace/workspace_identifier- 区域
-
WorkSpace 所在的区域(例如,
us-east-1)。 - account_id
-
AWS 账户的 ID,不含连字符(例如,
123456789012)。 - workspace_identifier
-
WorkSpace 的 ID (例如,
ws-a1bcd2efg)。
以下是用于标识某个特定 WorkSpace 的策略语句的 Resource 元素的格式。
"Resource": "arn:aws:workspaces:region:account_id:workspace/workspace_identifier"您可以使用 * 通配符来指定属于特定区域中特定账户的所有 WorkSpaces。
WorkSpace 池 ARN 具有以下示例中显示的语法。
arn:aws:workspaces:region:account_id:workspacespool/workspacespool_identifier- 区域
-
WorkSpace 所在的区域(例如,
us-east-1)。 - account_id
-
AWS 账户的 ID,不含连字符(例如,
123456789012)。 - workspacespool_identifier
-
WorkSpace 池的 ID(例如,
ws-a1bcd2efg)。
以下是用于标识某个特定 WorkSpace 的策略语句的 Resource 元素的格式。
"Resource": "arn:aws:workspaces:region:account_id:workspacespool/workspacespool_identifier"您可以使用 * 通配符来指定属于特定区域中特定账户的所有 WorkSpaces。
WorkSpace 证书 ARN 具有以下示例中显示的语法。
arn:aws:workspaces:region:account_id:workspacecertificate/workspacecertificateidentifier- 区域
-
WorkSpace 所在的区域(例如,
us-east-1)。 - account_id
-
AWS 账户的 ID,不含连字符(例如,
123456789012)。 - workspacecertificate_identifier
-
WorkSpace 证书的 ID(例如,
ws-a1bcd2efg)。
以下是用于标识某个特定 WorkSpace 证书的策略语句的 Resource 元素的格式。
"Resource": "arn:aws:workspaces:region:account_id:workspacecertificate/workspacecertificate_identifier"您可以使用 * 通配符来指定属于特定区域中特定账户的所有 WorkSpaces。
WorkSpace 映像 ARN 具有以下示例中显示的语法。
arn:aws:workspaces:region:account_id:workspaceimage/image_identifier- 区域
-
WorkSpace 映像所在的区域(例如,
us-east-1)。 - account_id
-
AWS 账户的 ID,不含连字符(例如,
123456789012)。 - bundle_identifier
-
WorkSpace 映像的 ID (例如,
wsi-a1bcd2efg)。
以下是用于标识某个特定映像的策略语句的 Resource 元素的格式。
"Resource": "arn:aws:workspaces:region:account_id:workspaceimage/image_identifier"您可以使用 * 通配符来指定属于特定区域中特定账户的所有映像。
服务包 ARN 具有以下示例中显示的语法。
arn:aws:workspaces:region:account_id:workspacebundle/bundle_identifier- 区域
-
WorkSpace 所在的区域(例如,
us-east-1)。 - account_id
-
AWS 账户的 ID,不含连字符(例如,
123456789012)。 - bundle_identifier
-
WorkSpace 服务包的 ID (例如,
wsb-a1bcd2efg)。
以下是用于标识某个特定服务包的策略语句的 Resource 元素的格式。
"Resource": "arn:aws:workspaces:region:account_id:workspacebundle/bundle_identifier"您可以使用 * 通配符来指定属于特定区域中特定账户的所有捆绑包。
IP 组 ARN 具有以下示例中显示的语法。
arn:aws:workspaces:region:account_id:workspaceipgroup/ipgroup_identifier- 区域
-
WorkSpace 所在的区域(例如,
us-east-1)。 - account_id
-
AWS 账户的 ID,不含连字符(例如,
123456789012)。 - ipgroup_identifier
-
IP 组的 ID(例如
wsipg-a1bcd2efg)。
以下是用于标识某个特定 IP 组的策略语句的 Resource 元素的格式。
"Resource": "arn:aws:workspaces:region:account_id:workspaceipgroup/ipgroup_identifier"您可以使用 * 通配符来指定属于特定区域中特定账户的所有 IP 组。
目录 ARN 具有以下示例中显示的语法。
arn:aws:workspaces:region:account_id:directory/directory_identifier- 区域
-
WorkSpace 所在的区域(例如,
us-east-1)。 - account_id
-
AWS 账户的 ID,不含连字符(例如,
123456789012)。 - directory_identifier
-
目录的 ID(例如
d-12345a67b8)。
以下是用于标识某个特定目录的策略语句的 Resource 元素的格式。
"Resource": "arn:aws:workspaces:region:account_id:directory/directory_identifier"您可以使用 * 通配符来指定属于特定区域中特定账户的所有目录。
连接别名 ARN 具有以下示例中显示的语法。
arn:aws:workspaces:region:account_id:connectionalias/connectionalias_identifier- 区域
-
连接别名所在的区域(例如,
us-east-1)。 - account_id
-
AWS 账户的 ID,不含连字符(例如,
123456789012)。 - connectionalias_identifier
-
连接别名的 ID(例如,
wsca-12345a67b8)。
以下是用于标识某个特定连接别名的策略语句的 Resource 元素的格式。
"Resource": "arn:aws:workspaces:region:account_id:connectionalias/connectionalias_identifier"您可以使用 * 通配符来指定属于特定区域中特定账户的所有连接别名。
您不能使用以下 API 操作指定资源 ARN:
-
AssociateIpGroups -
CreateIpGroup -
CreateTags -
DeleteTags -
DeleteWorkspaceImage -
DescribeAccount -
DescribeAccountModifications -
DescribeIpGroups -
DescribeTags -
DescribeWorkspaceDirectories -
DescribeWorkspaceImages -
DescribeWorkspaces -
DescribeWorkspacesConnectionStatus -
DisassociateIpGroups -
ImportWorkspaceImage -
ListAvailableManagementCidrRanges -
ModifyAccount
对于不支持资源级权限的 API 操作,必须指定以下示例中显示的资源语句。
"Resource": "*"
对于以下 API 操作,当资源不归账户所有时,您无法在资源 ARN 中指定账户 ID:
-
AssociateConnectionAlias -
CopyWorkspaceImage -
DisassociateConnectionAlias
对于这些 API 操作,只有当该账户拥有要处理的资源时,您才能在资源 ARN 中指定账户 ID。当账户不拥有资源时,您必须为账户 ID 指定 *,如以下示例中所示。
"arn:aws:workspaces:region:*:resource_type/resource_identifier"
创建 workspaces_DefaultRole 角色
在使用 API 注册目录之前,必须验证名为 workspaces_DefaultRole 的角色是否存在。此角色由快速设置功能创建,或者如果您使用AWS 管理控制台启动 WorkSpace,则它会向 Amazon WorkSpaces 授予代表您访问特定 AWS 资源的权限。如果此角色不存在,您可以使用以下程序创建它。
创建 workspaces_DefaultRole 角色
-
登录 AWS 管理控制台,然后通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/
。 -
在左侧的导航窗格中,选择角色。
-
选择创建角色。
-
在选择受信任实体的类型下,选择其他 AWS 账户。
-
对于账户 ID,请输入没有连字符或空格的账户 ID。
-
对于选项,请勿指定多重验证 (MFA)。
-
选择下一步: 权限。
-
在附加权限策略页面上,选择 AWS 托管策略 AmazonWorkSpacesServiceAccess、AmazonWorkSpacesSelfServiceAccess 和 AmazonWorkSpacesPoolServiceAccess。有关这些托管策略的更多信息,请参阅WorkSpaces 的 AWS 托管策略。
-
在设置权限边界下,建议您不要使用权限边界,因为可能会与附加到此角色的策略发生冲突。此类冲突可能会阻止角色的某些必要权限。
-
选择下一步:标签。
-
在 Add tags (optional) (添加标签(可选)) 页面上,根据需要添加标签。
-
选择下一步:审核。
-
在审核页面上,对于角色名称,输入
workspaces_DefaultRole。 -
(可选)对于角色描述,请输入描述。
-
选择创建角色。
-
在 workspaces_DefaultRole 角色的摘要页面上,选择信任关系选项卡。
-
在信任关系选项卡上,选择编辑信任关系。
-
在编辑信任关系页面上,将现有策略语句替换为以下语句。
{ "Statement": [ { "Effect": "Allow", "Principal": { "Service": "workspaces.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } -
选择更新信任策略。
创建 AmazonWorkSpacesPCAAccess 服务角色
在用户使用基于证书的身份验证方式登录之前,您必须先验证名为 AmazonWorkSpacesPCAAccess 的角色是否存在。此角色是在您使用AWS 管理控制台对目录进行基于证书的身份验证时创建的,它授予 Amazon WorkSpaces 代表您访问 AWS 私有 CA 资源的权限。如果由于您未使用控制台管理基于证书的身份验证而导致此角色不存在,则您可以使用以下步骤创建此角色。
使用 AWS CLI 创建 AmazonWorkSpacesPCAAccess 服务角色
-
使用以下文本创建名为
AmazonWorkSpacesPCAAccess.json的 JSON 文件。 -
根据需要调整
AmazonWorkSpacesPCAAccess.json路径并运行以下 AWS CLI 命令来创建服务角色,同时附加 AmazonWorkSpaces PCAAccess 托管策略。aws iam create-role --path /service-role/ --role-name AmazonWorkSpacesPCAAccess --assume-role-policy-document file://AmazonWorkSpacesPCAAccess.jsonaws iam attach-role-policy —role-name AmazonWorkSpacesPCAAccess —policy-arn arn:aws:iam::aws:policy/AmazonWorkspacesPCAAccess