WorkSpaces の Identity and Access Management - Amazon WorkSpaces

WorkSpaces の Identity and Access Management

デフォルトでは、IAM ユーザーには WorkSpaces のリソースおよびオペレーションのための許可がありません。IAM ユーザーに WorkSpaces のリソース管理を許可するには、それらのユーザーに許可を明示的に付与する IAM ポリシーを作成し、このポリシーを許可を必要とする IAM ユーザーまたはグループと結びつける必要があります。

注記

Amazon WorkSpaces は、WorkSpace への IAM 認証情報のプロビジョニング (インスタンスプロファイルなど) をサポートしていません。

アクセス権限を付与するにはユーザー、グループ、またはロールにアクセス許可を追加します。

IAM の追加リソースは次のとおりです。

ポリシーの例

以下の例では、Amazon WorkSpaces に対して IAM ユーザーが所有するアクセス許可を制御するために使用できるポリシーステートメントを示しています。

次のポリシーステートメントは、WorkSpaces Personal と WorkSpaces Pools のタスクを実行するアクセス許可を IAM ユーザーに付与します。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ds:*", "workspaces:*", "application-autoscaling:DeleteScalingPolicy", "application-autoscaling:DeleteScheduledAction", "application-autoscaling:DeregisterScalableTarget", "application-autoscaling:DescribeScalableTargets", "application-autoscaling:DescribeScalingActivities", "application-autoscaling:DescribeScalingPolicies", "application-autoscaling:DescribeScheduledActions", "application-autoscaling:PutScalingPolicy", "application-autoscaling:PutScheduledAction", "application-autoscaling:RegisterScalableTarget", "cloudwatch:DeleteAlarms", "cloudwatch:DescribeAlarms", "cloudwatch:PutMetricAlarm", "ec2:AssociateRouteTable", "ec2:AttachInternetGateway", "ec2:AuthorizeSecurityGroupEgress", "ec2:AuthorizeSecurityGroupIngress", "ec2:CreateInternetGateway", "ec2:CreateNetworkInterface", "ec2:CreateRoute", "ec2:CreateRouteTable", "ec2:CreateSecurityGroup", "ec2:CreateSubnet", "ec2:CreateTags", "ec2:CreateVpc", "ec2:DeleteNetworkInterface", "ec2:DeleteSecurityGroup", "ec2:DescribeAvailabilityZones", "ec2:DescribeInternetGateways", "ec2:DescribeNetworkInterfaces", "ec2:DescribeRouteTables", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "ec2:RevokeSecurityGroupEgress", "ec2:RevokeSecurityGroupIngress", "iam:AttachRolePolicy", "iam:CreatePolicy", "iam:CreateRole", "iam:GetRole", "iam:ListRoles", "iam:PutRolePolicy", "kms:ListAliases", "kms:ListKeys", "secretsmanager:ListSecrets", "tag:GetResources", "sso-directory:SearchUsers", "sso:CreateApplication", "sso:DeleteApplication", "sso:DescribeApplication", "sso:DescribeInstance", "sso:GetApplicationGrant", "sso:ListInstances", "sso:PutApplicationAssignmentConfiguration", "sso:PutApplicationAuthenticationMethod", "sso:PutApplicationGrant" ], "Resource": "*" }, { "Sid": "iamPassRole", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "*", "Condition": { "StringEquals": { "iam:PassedToService": "workspaces.amazonaws.com" } } } ] }

次のポリシーステートメントは、すべての WorkSpaces Personal タスクを実行するアクセス許可を IAM ユーザーに付与します。

Amazon WorkSpaces は、API およびコマンドラインツールを使用する際に Action および Resource 要素を完全にサポートしますが、AWS マネジメントコンソール から Amazon WorkSpaces を使用するには、IAM ユーザーに次のアクションおよびリソースのための許可が必要です。

  • アクション: "ds:*"

  • リソース: "Resource": "*"

次のポリシー例では、IAM ユーザーが AWS マネジメントコンソール から Amazon WorkSpaces を使用することを許可する方法を示しています。

JSON
{ "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", "secretsmanager:ListSecrets", "sso-directory:SearchUsers", "sso:CreateApplication", "sso:DeleteApplication", "sso:DescribeApplication", "sso:DescribeInstance", "sso:GetApplicationGrant", "sso:ListInstances", "sso:PutApplicationAssignmentConfiguration", "sso:PutApplicationAuthenticationMethod", "sso:PutApplicationGrant" ], "Resource": "*" }, { "Sid": "iamPassRole", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "*", "Condition": { "StringEquals": { "iam:PassedToService": "workspaces.amazonaws.com" } } } ] }

次のポリシーステートメントは、すべての WorkSpaces Pools タスクを実行するアクセス許可を IAM ユーザーに付与します。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "workspaces:*", "application-autoscaling:DeleteScalingPolicy", "application-autoscaling:DeleteScheduledAction", "application-autoscaling:DeregisterScalableTarget", "application-autoscaling:DescribeScalableTargets", "application-autoscaling:DescribeScalingActivities", "application-autoscaling:DescribeScalingPolicies", "application-autoscaling:DescribeScheduledActions", "application-autoscaling:PutScalingPolicy", "application-autoscaling:PutScheduledAction", "application-autoscaling:RegisterScalableTarget", "cloudwatch:DeleteAlarms", "cloudwatch:DescribeAlarms", "cloudwatch:PutMetricAlarm", "ec2:CreateSecurityGroup", "ec2:CreateTags", "ec2:DescribeInternetGateways", "ec2:DescribeRouteTables", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "iam:AttachRolePolicy", "iam:CreatePolicy", "iam:CreateRole", "iam:GetRole", "iam:ListRoles", "iam:PutRolePolicy", "secretsmanager:ListSecrets", "tag:GetResources" ], "Resource": "*" }, { "Sid": "iamPassRole", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "*", "Condition": { "StringEquals": { "iam:PassedToService": "workspaces.amazonaws.com" } } }, { "Action": "iam:CreateServiceLinkedRole", "Effect": "Allow", "Resource": "arn:aws:iam::*:role/aws-service-role/workspaces.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_WorkSpacesPool", "Condition": { "StringLike": { "iam:AWSServiceName": "workspaces.application-autoscaling.amazonaws.com" } } } ] }

次のポリシーステートメントでは、IAM ユーザーに対し、自分のライセンスを使用する (BYOL) WorkSpaces の作成に必要な Amazon EC2 タスクを含む、すべての WorkSpaces タスクを実行するための許可を付与しています。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ds:*", "workspaces:*", "ec2:AssociateRouteTable", "ec2:AttachInternetGateway", "ec2:AuthorizeSecurityGroupEgress", "ec2:AuthorizeSecurityGroupIngress", "ec2:CreateInternetGateway", "ec2:CreateNetworkInterface", "ec2:CreateRoute", "ec2:CreateRouteTable", "ec2:CreateSecurityGroup", "ec2:CreateSubnet", "ec2:CreateTags", "ec2:CreateVpc", "ec2:DeleteNetworkInterface", "ec2:DeleteSecurityGroup", "ec2:DescribeAvailabilityZones", "ec2:DescribeImages", "ec2:DescribeInternetGateways", "ec2:DescribeNetworkInterfaces", "ec2:DescribeRouteTables", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "ec2:ModifyImageAttribute", "ec2:RevokeSecurityGroupEgress", "ec2:RevokeSecurityGroupIngress", "iam:CreateRole", "iam:GetRole", "iam:PutRolePolicy", "kms:ListAliases", "kms:ListKeys" ], "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 には、次の例に示す構文があります。

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"

*」ワイルドカードを使用して、特定リージョンの特定のアカウントに属するすべての WorkSpace を指定できます。

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"

*」ワイルドカードを使用して、特定リージョンの特定のアカウントに属するすべての WorkSpace を指定できます。

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"

*」ワイルドカードを使用して、特定リージョンの特定のアカウントに属するすべての WorkSpace を指定できます。

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"

* ワイルドカードを使用して、特定リージョンの特定のアカウントに属するすべての接続エイリアスを指定できます。

リソース ARN は、次の API アクションで指定することはできません。

  • AssociateIpGroups

  • CreateIpGroup

  • CreateTags

  • DeleteTags

  • DeleteWorkspaceImage

  • DescribeAccount

  • DescribeAccountModifications

  • DescribeIpGroups

  • DescribeTags

  • DescribeWorkspaceDirectories

  • DescribeWorkspaceImages

  • DescribeWorkspaces

  • DescribeWorkspacesConnectionStatus

  • DisassociateIpGroups

  • ImportWorkspaceImage

  • ListAvailableManagementCidrRanges

  • ModifyAccount

リソースレベルの権限をサポートしていない API アクションの場合は、次の例に示すように、Resource ステートメントを指定する必要があります。

"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 を起動した場合、特定の AWS リソースにアクセスする許可が Amazon WorkSpaces 自動的に付与されます。このロールが存在しない場合は、以下の手順で作成できます。

workspaces_DefaultRole ロールを作成するには
  1. AWS マネジメントコンソール にサインインして、IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. 左側のナビゲーションペインで、[Roles] を選択します。

  3. [ロールの作成] を選択します。

  4. [Select type of trusted entity] (信頼できるエンティティのタイプを選択) で、[Another AWS account] (別の アカウント) を選択します。

  5. [Account ID] には、ハイフンやスペースを入れずにアカウント ID を入力します。

  6. [Options] では、多要素認証 (MFA) を指定しないでください。

  7. [Next: Permissions] (次のステップ: 許可) を選択します。

  8. [許可ポリシーをアタッチ] ページで、AWS マネージドポリシーとして AmazonWorkSpacesServiceAccessAmazonWorkSpacesSelfServiceAccessAmazonWorkSpacesPoolServiceAccess を選択します。これらのマネージドポリシーの詳細については、「WorkSpaces 用の AWS 管理ポリシー」を参照してください。

  9. [許可の境界を設定] では、このロールにアタッチされているポリシーと競合する可能性があるため、アクセス許可の境界を使用しないことをお勧めします。このような競合が発生すると、ロールに必要な特定の許可がブロックされる可能性があります。

  10. [次へ: タグ] を選択します。

  11. [Add tags (optional)] ページで、必要に応じてタグを追加します。

  12. [Next: Review] を選択します。

  13. [Review] ページの [Role name] に、workspaces_DefaultRole を入力します。

  14. (オプション) [ロールの説明] に、説明を入力します。

  15. [ロールの作成] を選択します。

  16. workspaces_DefaultRole ロールの [Summary] ページで [Trust relationships] タブを選択します。

  17. [信頼関係] タブで、[信頼関係の編集] を選択します。

  18. [Edit Trust Relationship] ページで、既存のポリシーステートメントを次のステートメントに置き換えます。

    { "Statement": [ { "Effect": "Allow", "Principal": { "Service": "workspaces.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  19. [Update Trust Policy] を選択します。

AmazonWorkSpacesPCAAccess サービスロールを作成する

ユーザーが証明書ベースの認証を使用してログインする前に、AmazonWorkSpacesPCAAccess という名前のロールが存在することを確認する必要があります。このロールは、AWS マネジメントコンソールを使用してディレクトリで証明書ベースの認証を有効にしたときに作成されます。このロールは、ユーザーに代わって AWS Private CA リソースにアクセスすることを Amazon WorkSpaces に許可します。コンソールを使用して証明書ベースの認証を管理していないために、このロールが存在しない場合は、次の手順で作成できます。

AWS CLI を使用して AmazonWorkSpacesPCAAccess サービスロールを作成するには
  1. AmazonWorkSpacesPCAAccess.json という名前の JSON ファイルを次の内容で作成します。

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "prod.euc.ecm.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  2. 必要に応じて AmazonWorkSpacesPCAAccess.json パスを調整し、次の AWS 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