Skip to main content

IAM 정책 및 역할 생성

Horizon Cloud에 대한 AWS 계정에서 여러 리소스 제공자가 등록된 상태여야 합니다.

Horizon Edge를 배포하기 전에 나열된 IAM 사용 권한이 제공되었는지 확인합니다. Horizon Edge 배포의 마지막 단계는 이러한 리소스 제공자가 등록된 상태인지 확인하고 Horizon Edge 배포가 등록 취소된 경우 시작되지 않도록 합니다.

필요한 IAM 사용 권한을 제공하기 위해 두 가지 방법을 사용할 수 있습니다.

  • AWS IAM 콘솔을 사용하여 사용 권한을 생성합니다.
  • AWS IAM 콘솔을 사용하여 아래에 포함된 JSON 스크립트를 실행합니다.



IAM 사용 권한 생성

사용 권한을 수동으로 생성하도록 선택하는 경우 AWS IAM 콘솔에서 다음과 같은 필수 IAM 사용 권한을 제공해야 합니다.

  • ec2: - 모든 사용 권한

  • workspaces: - 모든 사용 권한

  • fsx: - 모든 사용 권한

  • ds:DescribeDirectories, AuthorizeApplication, UnauthorizeApplication, UpdateAuthorizedApplication

  • cloudformation:CreateStack, UpdateStack, DeleteStack, DescribeStacks, TagResource, UntagResource, DescribeStackEvents, ListStackResources, GetTemplate

  • resource-groups:GetGroup, CreateGroup, DeleteGroup, UpdateGroup Tag, GetTags, ListGroups, ListGroupResources, ListResourceTypes, AssociateResource, DisassociateResource

  • elasticloadbalancing:AddTags, RemoveTags, RegisterTargets, DeregisterTargets, DescribeTargetHealth, CreateListener, DeleteListener, DescribeListeners, CreateTargetGroup, DeleteTargetGroup, ModifyTargetGroup, DescribeTargetGroups, CreateLoadBalancer, DeleteLoadBalancer, DescribeLoadBalancers, ModifyLoadBalancerAttributes, ModifyTargetGroupAttributes, SetSubnets

  • s3:GetObject, PutObject, ListBucket, ListAllMyBuckets, CreateBucket, DeleteObject, DeleteBucket, PutBucketPolicy, GetBucketPolicy, DeleteBucketPolicy, PutBucketTagging, GetBucketLocation, PutLifecycleConfiguration, PutBucketPublicAccessBlock, PutEncryptionConfiguration

  • iam:GetRole, PassRole, CreateRole, GetPolicy, PutRolePolicy, GetPolicyVersion, ListAttachedUserPolicies, GetInstanceProfile, CreateInstanceProfile, DeleteInstanceProfile, CreateServiceLinkedRole, AddRoleToInstanceProfile, RemoveRoleFromInstanceProfile, SimulatePrincipalPolicy, DeleteRole, AttachRolePolicy, DetachRolePolicy, TagRole, UntagRole

  • tag:GetResources, TagResources, UntagResources

  • kms:Encrypt, Decrypt, ReEncrypt, GenerateDataKey, DescribeKey, ListKeys, ListAliases

  • ssm:SendCommand, StartSession, CreateAssociation, DescribeAssociation, GetCommandInvocation, ListCommandInvocations, DescribeInstanceInformation

참고: 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:*",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "workspaces:*",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "fsx:*",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "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:CreateRole",
                "iam:GetPolicy",
                "iam:PutRolePolicy",
                "iam:GetPolicyVersion",
                "iam:ListAttachedUserPolicies",
                "iam:GetInstanceProfile",
                "iam:CreateInstanceProfile",
                "iam:DeleteInstanceProfile",
                "iam:CreateServiceLinkedRole",
                "iam:AddRoleToInstanceProfile",
                "iam:RemoveRoleFromInstanceProfile",
                "iam:SimulatePrincipalPolicy",
                "iam:DeleteRole",
                "iam:AttachRolePolicy",
                "iam:DetachRolePolicy",
                "iam:ListAttachedRolePolicies",
                "iam:ListInstanceProfilesForRole"
                
            ],
            "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"
            ],
            "Resource": "*"
        }
    ]
}



IAM 역할 생성

IAM 역할은 특정 사용 권한이 있는 계정에서 생성할 수 있는 IAM ID입니다. IAM 역할은 ID가 AWS에서 수행할 수 있는 작업과 수행할 수 없는 작업을 결정하는 사용 권한 정책이 할당된 AWS ID라는 측면에서 IAM 사용자와 유사합니다. 그러나, 한 사람과 고유하게 연결되는 대신, 역할은 그것을 필요로 하는 누구든지 맡을 수 있도록 고안된 것입니다. 또한 역할에는 암호 또는 연결된 액세스 키와 같은 표준 장기 자격 증명이 없습니다. 그 대신, 역할을 맡으면 역할 세션에 대한 임시 보안 자격 증명이 제공됩니다.

다음 단계에 따라 AWS에서 역할 세션에 대한 임시 보안 자격 증명을 제공하는 IAM 역할을 생성하여 AWS 리소스에 대한 보안 액세스를 보장하면서 Horizon Cloud에 대한 액세스를 허용할 수 있습니다.

  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}"
                }
            }
        }
    ]
}

이 페이지가 도움이 되었나요?

이 항목에 대한 피드백 보내기

이 항목이 도움이 되었나요?

개인정보나 기밀정보는 입력하지 마세요.

링크를 생성하는 중…