Skip to main content

2026 年 9 月 2 日

IAM ポリシーとロールの作成

Horizon Cloud 用の AWS アカウントでは、いくつかのリソース プロバイダのステータスが登録済みである必要があります。

**注:**このページにリストされている権限要件は、リリース 2601 以降の新規のお客様に固有のものです。リリース 2601 より前の既存のお客様の権限要件については、ナレッジベースの記事 KB6001262 を参照してください。

Horizon Edge をデプロイする前に、リストされている IAM 権限が指定されていることを確認します。Horizon Edge デプロイの最後の手順では、これらのリソース プロバイダのステータスが登録済みであることを検証し、登録解除されている場合は Horizon Edge のデプロイを開始できないようにします。

必要な IAM 権限を指定するには、2 つの方法があります。

  • AWS IAM コンソールを使用して権限を作成する。
  • AWS IAM コンソールを使用して、以下に含まれる JSON スクリプトを実行する。

IAM 権限の作成

権限を手動で作成する場合は、以下の JSON ポリシーにリストされている必要な IAM 権限を AWS IAM コンソールで直接指定します。

**注:**Horizon Cloud は、AWS サービス制御ポリシー (SCP) またはその他のタグ ポリシーを使用して必須にされたタグについて、必須タグ検証を実行しません。組織が AWS サービス制御ポリシー (SCP) またはタグ ポリシーを適用する場合は、Edge をデプロイする前に、必要なすべてのタグがプロバイダに適用されていることを確認します。ポリシーで必須にされたタグが見つからないと、Horizon Edge、Edge Gateway、および UAG のデプロイに失敗することがあります。詳細については、「Amazon リソース タグの使用」を参照してください。

次の JSON ファイルのコピーと使用

JSON ファイル メソッドを使用する場合は、以下の JSON スクリプトを AWS IAM コンソールのポリシー エディタにコピーします。

JSON ポリシー

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:AttachInternetGateway",
        "ec2:AssociateRouteTable",
        "ec2:CreateInternetGateway",
        "ec2:CreateRoute",
        "ec2:CreateRouteTable",
        "ec2:CreateSubnet",
        "ec2:CreateVpc",
        "ec2:DescribeInstances",
        "ec2:ModifyImageAttribute",
        "ec2:RunInstances",
        "ec2:TerminateInstances",
        "ec2:StartInstances",
        "ec2:StopInstances",
        "ec2:RebootInstances",
        "ec2:DescribeInstanceStatus",
        "ec2:DescribeInstanceTypes",
        "ec2:DescribeInstanceTypeOfferings",
        "ec2:ModifyInstanceAttribute",
        "ec2:AssociateIamInstanceProfile",
        "ec2:DescribeImages",
        "ec2:CreateImage",
        "ec2:DeregisterImage",
        "ec2:DescribeLaunchTemplateVersions",
        "ec2:GetConsoleOutput",
        "ec2:DescribeInstanceAttribute",
        "ec2:DescribeSubnets",
        "ec2:DescribeVpcs",
        "ec2:DescribeRouteTables",
        "ec2:DescribeNetworkAcls",
        "ec2:DescribeDhcpOptions",
        "ec2:DescribeNetworkInterfaces",
        "ec2:CreateNetworkInterface",
        "ec2:AttachNetworkInterface",
        "ec2:DeleteNetworkInterface",
        "ec2:DisassociateAddress",
        "ec2:AllocateAddress",
        "ec2:AssociateAddress",
        "ec2:ReleaseAddress",
        "ec2:DescribeAddresses",
        "ec2:DescribeInternetGateways",
        "ec2:DescribeNatGateways",
        "ec2:DescribeVpcAttribute",
        "ec2:DescribeSnapshots",
        "ec2:CreateSnapshot",
        "ec2:DeleteSnapshot",
        "ec2:DescribeSecurityGroups",
        "ec2:CreateSecurityGroup",
        "ec2:AuthorizeSecurityGroupIngress",
        "ec2:AuthorizeSecurityGroupEgress",
        "ec2:RevokeSecurityGroupIngress",
        "ec2:RevokeSecurityGroupEgress",
        "ec2:DeleteSecurityGroup",
        "ec2:CreateTags",
        "ec2:DeleteTags",
        "ec2:DescribeTags",
        "ec2:DescribeRegions",
        "ec2:DescribeAvailabilityZones",
        "ec2:DescribeAccountAttributes"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "autoscaling:DescribeAutoScalingGroups"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "fsx:CreateFileSystem",
        "fsx:DescribeFileSystems",
        "fsx:DeleteFileSystem",
        "fsx:UpdateFileSystem",
        "fsx:TagResource",
        "fsx:UntagResource"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "workspaces:*"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "ds:*",
        "ds:DescribeDirectories",
        "ds:AuthorizeApplication",
        "ds:UnauthorizeApplication",
        "ds:UpdateAuthorizedApplication"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "cloudformation:CreateStack",
        "cloudformation:UpdateStack",
        "cloudformation:DeleteStack",
        "cloudformation:DescribeStacks",
        "cloudformation:TagResource",
        "cloudformation:UntagResource",
        "cloudformation:DescribeStackEvents",
        "cloudformation:ListStackResources",
        "cloudformation:GetTemplate"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "resource-groups:GetGroup",
        "resource-groups:CreateGroup",
        "resource-groups:DeleteGroup",
        "resource-groups:UpdateGroup",
        "resource-groups:Tag",
        "resource-groups:Untag",
        "resource-groups:GetTags",
        "resource-groups:ListGroups",
        "resource-groups:ListGroupResources",
        "resource-groups:ListResourceTypes",
        "resource-groups:AssociateResource",
        "resource-groups:DisassociateResource"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "elasticloadbalancing:AddTags",
        "elasticloadbalancing:RemoveTags",
        "elasticloadbalancing:RegisterTargets",
        "elasticloadbalancing:DeregisterTargets",
        "elasticloadbalancing:DescribeTargetHealth",
        "elasticloadbalancing:CreateListener",
        "elasticloadbalancing:DeleteListener",
        "elasticloadbalancing:DescribeListeners",
        "elasticloadbalancing:CreateTargetGroup",
        "elasticloadbalancing:DeleteTargetGroup",
        "elasticloadbalancing:ModifyTargetGroup",
        "elasticloadbalancing:DescribeTargetGroups",
        "elasticloadbalancing:CreateLoadBalancer",
        "elasticloadbalancing:DeleteLoadBalancer",
        "elasticloadbalancing:DescribeLoadBalancers",
        "elasticloadbalancing:ModifyLoadBalancerAttributes",
        "elasticloadbalancing:ModifyTargetGroupAttributes",
        "elasticloadbalancing:SetSubnets"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:PutObject",
        "s3:ListBucket",
        "s3:ListAllMyBuckets",
        "s3:CreateBucket",
        "s3:DeleteObject",
        "s3:DeleteBucket",
        "s3:PutBucketPolicy",
        "s3:GetBucketPolicy",
        "s3:DeleteBucketPolicy",
        "s3:PutBucketTagging",
        "s3:GetBucketLocation",
        "s3:PutLifecycleConfiguration",
        "s3:PutBucketPublicAccessBlock",
        "s3:PutEncryptionConfiguration"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "iam:GetRole",
        "iam:PassRole",
        "iam:GetPolicy",
        "iam:GetPolicyVersion",
        "iam:ListAttachedUserPolicies",
        "iam:CreateInstanceProfile",
        "iam:DeleteInstanceProfile",
        "iam:AddRoleToInstanceProfile",
        "iam:RemoveRoleFromInstanceProfile",
        "iam:SimulatePrincipalPolicy",
        "iam:ListAttachedRolePolicies",
        "iam:GetInstanceProfile",
        "iam:ListInstanceProfilesForRole",
        "iam:TagRole",
        "iam:UntagRole",
        "iam:CreateServiceLinkedRole",
        "iam:CreateRole",
        "iam:AttachRolePolicy",
        "iam:PutRolePolicy",
        "iam:ListRoles",
        "iam:CreatePolicy"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "tag:GetResources",
        "tag:TagResources",
        "tag:UntagResources"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "kms:Encrypt",
        "kms:Decrypt",
        "kms:ReEncrypt*",
        "kms:GenerateDataKey*",
        "kms:DescribeKey",
        "kms:ListKeys",
        "kms:ListAliases"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "ssm:SendCommand",
        "ssm:StartSession",
        "ssm:CreateAssociation",
        "ssm:DescribeAssociation",
        "ssm:GetCommandInvocation",
        "ssm:ListCommandInvocations",
        "ssm:DescribeInstanceInformation",
        "ssm:StartAutomationExecution",
        "ssm:DescribeAutomationExecutions",
        "ssm:GetAutomationExecution"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "sso:GetApplicationGrant",
        "sso:ListInstances",
        "sso:DescribeInstance",
        "sso:DescribeApplication",
        "sso:CreateApplication",
        "sso:DeleteApplication",
        "sso-directory:SearchUsers",
        "sso:PutApplicationAuthenticationMethod",
        "sso:PutApplicationAssignmentConfiguration",
        "sso:PutApplicationGrant"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "application-autoscaling:PutScheduledAction",
        "application-autoscaling:RegisterScalableTarget",
        "application-autoscaling:DeleteScalingPolicy",
        "application-autoscaling:DescribeScalingPolicies",
        "application-autoscaling:PutScalingPolicy",
        "application-autoscaling:DeleteScheduledAction",
        "application-autoscaling:DescribeScalingActivities",
        "application-autoscaling:DescribeScalableTargets",
        "application-autoscaling:DescribeScheduledActions",
        "application-autoscaling:DeregisterScalableTarget"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "cloudwatch:DeleteAlarms",
        "cloudwatch:DescribeAlarms",
        "cloudwatch:PutMetricAlarm"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "secretsmanager:ListSecrets"
      ],
      "Resource": "*"
    }
    {
      "Effect": "Allow",
      "Action": [
        "servicequotas:GetServiceQuota"
      ],
      "Resource": "*"
    }
  ]
}



IAM ロールの作成

IAM ロールは、特定の権限を持つアカウントで作成できる IAM ID です。IAM ロールは、ID が AWS で実行できることとできないことを決定する権限ポリシーを持つ AWS ID であるという意味で IAM ユーザーに似ています。ただし、1 人のユーザーに一意に関連付けられるのではなく、ロールを必要とするユーザーが引き受けることを想定しています。また、ロールには、パスワードやアクセス キーなどの標準的な長期の認証情報は関連付けられていません。代わりに、ロールを引き受けると、ロール セッションの一時的なセキュリティ認証情報が提供されます。

以下の手順に従うことで、ロール セッションに一時的なセキュリティ認証情報を提供する IAM ロールを AWS に作成し、AWS リソースへの安全なアクセスを確保しながら Horizon Cloud へのアクセスを実現できます。関連情報については、AWS ドキュメントの「カスタム信頼ポリシーを使用したロールの作成」を参照してください。

  1. IAM コンソールで、AWS アカウントの IAM(ID とアクセス管理)セクションに移動します。

  2. 左側のペインで [ロール] をクリックします。

  3. [ロールの作成] をクリックし、[カスタム信頼ポリシー] を選択します。

  4. カスタム信頼ポリシー エディタで次の JSON ポリシーを入力し、カスタム信頼ポリシーを定義します。

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "Statement1",
          "Effect": "Allow",
          "Principal": {
            "AWS": [
              "arn:aws:iam::211125714243:user/svc.hcs-ng-prod-svc-user"
            ]
          },
          "Action": "sts:AssumeRole",
          "Condition": {
            "StringEquals": {
              "sts:ExternalId": "{create a custom ExternalId}"
            }
          }
        },
        {
          "Sid": "ssmRoleTrustRelationship",
          "Effect": "Allow",
          "Principal": {
            "Service": "ec2.amazonaws.com"
          },
          "Action": "sts:AssumeRole",
          "Condition": {
            "StringEquals": {
              "aws:SourceAccount": "<Customer account number>"
            }
          }
        }
      ]
    }
    
  5. IAM コンソールの [権限の追加] セクションで、このトピックの [IAM 権限の作成] セクションで定義されているポリシーを追加します。

  6. また、上記の権限に加えて、AWS 管理対象ポリシー AmazonSSMManagedInstanceCore も追加して、SSM 関連の機能を有効にします。 AWS のドキュメント「AmazonSSMManagedInstanceCore」を参照してください。

このページは役に立ちましたか?

このトピックについてフィードバックを送信

このトピックは役に立ちましたか?

個人情報や機密情報は入力しないでください。

リンクを生成しています…