AWS 계정 설정

AWS 계정 설정

AWS 계정 설정

AWS 계정을 생성하고 CloudXper Management Platform에서 해당 계정을 등록하기 위한 Policy를 설정합니다.

CloudXper에 AWS 계정을 등록하기 위한 방법은 아래와 같이 2가지 방법이 있습니다만,
현재는 보안성 이슈와 작업 편의성을 위해 ‘AWS Role을 통한 등록 방식’으로 단일화하였으니, 기존에 ‘Key방식’을 사용하셨던 분들은 가이드를 바탕으로 전환 등록 바랍니다.

  1. AWS Role을 통해 등록하는 방법 (권장)

  2. AccessKey ID, Secret Access Key를 생성하여 등록하는 방법 (사용종료)

 

AWS Role을 통한 등록 가이드 (권장)

  • AWS Role을 생성하고 CloudXper에서 해당 Role을 위임받는 방식입니다.

Step1. AWS Policy 생성

Policy는 목적에 따라 아래의 두 가지로 구분이 됩니다.

  1. CloudXper의 기본 기능(Inventory 수집)을 사용하기 위한 Policy (필수)

    → ReadOnlyAccess(AWS managed)가 기본적으로 필요하며, ReadOnlyAccess로 수집 불가한 항목을 위해 아래 가이드에 따라 "1.기본 기능 Policy" 생성 절차를 진행합니다.

  2. CloudXper의 추가 기능(New ITSM, CSR 자동화, 솔루션)을 사용하기 위한 Policy (선택사항)

    → 클라우드 자원의 생성/변경/삭제 기능을 위해 아래 가이드에 따라 "2.추가 기능 Policy" 생성 절차를 진행합니다.

기본 기능 사용을 위한 Policy필수로 요구되며, 추가 기능 사용을 위한 Policy는 사용 여부에 따라 선택적으로 생성해주시길 바랍니다.

기본 기능 Policy

 1.1. AWS 콘솔 > IAM > Policies 이동 후 Create Policy를 클릭합니다.

image-20240729-002132.png

 

 1.2. Policy 생성 방법은 JSON을 직접 입력하도록 선택합니다.

image-20240729-002351.png

 

 1.3. JSON 입력 창에 아래 Policy를 복사하여 작성합니다.

AWS 인벤토리 추가 수집 Policy
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Get*", "kms:List*", "elasticfilesystem:List*", "support:DescribeTrusted*", "glue:Get*", "glue:List*", "ec2:Describe*", "rds:Describe*", "elasticache:Describe*", "redshift:Describe*", "es:Describe*", "savingsplans:Describe*", "s3express:ListAllMyDirectoryBuckets", "bedrock:List*", "bedrock:Get*", "airflow:List*", "airflow:Get*" ], "Resource": "*" } ] }

 

 1.4. Next: Tags. Next: Riveiw를 순차적으로 클릭합니다.

 

 1.5. Policy의 이름과 설명을 입력한 후, Create policy를 클릭하여 Policy를 생성합니다.

image-20240729-002434.png

 

AutoCSR 을 위한 Policy 추가(NextITSM 을 통해 자동화 처리하는 경우이며, 선택 사항임)

 2.1. AWS 콘솔 > IAM > Policies 이동 후 Create Policy를 클릭합니다.

image-20240729-002628.png

 

 2.2. Policy 생성 방법은 JSON을 직접 입력하도록 선택합니다.

image-20240729-002656.png

 

 2.3. JSON 입력 창에 아래 Policy를 복사하여 작성합니다.

New ITSM 및 CSR 자동화 연동 용도 Policy Json
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Resource": "*", "Action": [ "ec2:*Tags", "ec2:Describe*", "ec2:DeregisterImage", "ec2:RegisterImage", "ec2:CreateImage", "ec2:CreateSecurityGroup", "ec2:CreateKeyPair", "ec2:CreateVolume", "ec2:CreateSnapshot", "ec2:CopyImage", "ec2:CopySnapshot", "ec2:RunInstances", "ec2:RebootInstances", "ec2:StartInstances", "ec2:ModifyInstanceAttribute", "ec2:ModifyVolume", "ec2:ModifyVolumeAttribute", "ec2:ModifyImageAttribute", "ec2:ModifySnapshotAttribute", "ec2:StopInstances", "ec2:AssociateIamInstanceProfile", "ec2:AssociateAddress", "ec2:ReplaceIamInstanceProfileAssociation", "ec2:DisassociateIamInstanceProfile", "ec2:DisassociateAddress", "ec2:AttachVolume", "ec2:DetachVolume", "ec2:DeleteVolume", "ec2:DeleteSnapshot", "ec2:DeleteSecurityGroup", "ec2:DeleteKeyPair", "ec2:AuthorizeSecurityGroupIngress", "ec2:AuthorizeSecurityGroupEgress", "ec2:RevokeSecurityGroupIngress", "ec2:RevokeSecurityGroupEgress", "ec2:UpdateSecurityGroupRuleDescriptionsIngress", "ec2:UpdateSecurityGroupRuleDescriptionsEgress", "ec2:AllocateAddress", "ec2:ReleaseAddress", "ec2:TerminateInstances", "tag:*Resources", "tag:GetTagKeys", "tag:GetTagValues", "iam:TagRole", "iam:TagUser", "iam:UntagRole", "iam:UntagUser", "iam:List*", "iam:CreateInstanceProfile", "iam:CreateRole", "iam:AddRoleToInstanceProfile", "iam:PutRolePolicy", "iam:PutUserPolicy", "iam:PassRole", "iam:CreateUser", "iam:CreateLoginProfile", "iam:CreateAccessKey", "iam:CreateServiceSpecificCredential", "iam:CreatePolicy", "iam:CreatePolicyVersion", "iam:UpdateUser", "iam:UpdateLoginProfile", "iam:UpdateAssumeRolePolicy", "iam:DeleteUser", "iam:DeleteLoginProfile", "iam:DeleteUserPolicy", "iam:DeleteAccessKey", "iam:DeleteServiceSpecificCredential", "iam:DeleteSSHPublicKey", "iam:DeleteVirtualMFADevice", "iam:DeletePolicy", "iam:DeletePolicyVersion", "iam:DeleteRolePolicy", "iam:AddUserToGroup", "iam:RemoveUserFromGroup", "iam:AttachUserPolicy", "iam:AttachRolePolicy", "iam:DetachUserPolicy", "iam:DetachRolePolicy", "iam:GetAccountPasswordPolicy", "iam:DeactivateMFADevice", "iam:GetGroup", "iam:GetRole", "iam:GetUser", "iam:GetPolicy", "iam:GetGroupPolicy", "iam:GetPolicyVersion", "iam:GetUserPolicy", "iam:GetInstanceProfile", "iam:SimulatePrincipalPolicy", "iam:DeleteSigningCertificate", "s3:DeleteObjectVersionTagging", "s3:DeleteObjectTagging", "s3:DeleteObjectVersion", "s3:GetObjectTagging", "s3:GetObjectVersionTagging", "s3:GetStorageLensConfigurationTagging", "s3:PutBucketTagging", "s3:PutLifecycleConfiguration", "s3:PutBucketPolicy", "s3:PutObject*", "s3:ReplicateTags", "s3:CreateBucket", "s3:GetObject", "s3:GetObjectRetention", "s3:GetObjectLegalHold", "s3:GetObjectAcl", "s3:GetAccessPoint", "s3:GetLifecycleConfiguration", "s3:GetBucket*", "s3:GetInventoryConfiguration", "s3:GetAccelerateConfiguration", "s3:GetEncryptionConfiguration", "s3:GetAccessPointPolicyStatus", "s3:GetMetricsConfiguration", "s3:GetReplicationConfiguration", "s3:GetAccountPublicAccessBlock", "s3:GetAnalyticsConfiguration", "s3:GetAccessPointPolicy", "s3:DeleteBucket", "s3:DeleteObject", "s3:DeleteBucketPolicy", "s3:List*", "route53:ChangeTagsForResource", "route53:ChangeResourceRecordSets", "route53:GetChange", "elasticloadbalancing:AddTags", "elasticloadbalancing:RemoveTags", "elasticloadbalancing:Describe*", "elasticloadbalancing:CreateRule", "elasticloadbalancing:DeleteLoadBalancer", "elasticloadbalancing:DeleteTargetGroup", "elasticloadbalancing:DeregisterTargets", "elasticloadbalancing:RegisterTargets", "rds:RebootDBInstance", "rds:RemoveTagsFromResource", "rds:AddTagsToResource", "rds:DeleteDBInstance", "rds:CreateDBSnapshot", "rds:DescribeOptionGroups", "rds:DescribeDB*", "rds:DescribeEvents", "rds:ModifyDBInstance", "rds:ListTagsForResource", "secretsmanager:GetRandomPassword", "sts:AssumeRole", "sts:GetCallerIdentity", "elasticfilesystem:DescribeFileSystems", "elasticfilesystem:DescribeLifecycleConfiguration", "elasticfilesystem:DescribeFileSystemPolicy", "elasticfilesystem:DescribeBackupPolicy", "elasticfilesystem:DescribeMountTargets", "elasticfilesystem:DescribeMountTargetSecurityGroups", "elasticfilesystem:DescribeAccessPoints", "elasticfilesystem:ListTagsForResource", "elasticfilesystem:CreateFileSystem", "elasticfilesystem:CreateAccessPoint", "elasticfilesystem:DeleteAccessPoint", "elasticfilesystem:CreateMountTarget", "elasticfilesystem:DeleteMountTarget", "elasticfilesystem:PutLifecycleConfiguration", "elasticfilesystem:PutFileSystemPolicy", "elasticfilesystem:PutBackupPolicy", "elasticfilesystem:UpdateFileSystem", "elasticfilesystem:DeleteFileSystem", "elasticfilesystem:DeleteTags", "elasticfilesystem:CreateTags", "elasticfilesystem:ModifyMountTargetSecurityGroups", "elasticfilesystem:DeleteFileSystemPolicy", "backup:CreateBackupSelection", "backup:GetBackupSelection", "dynamodb:ListTagsOfResource", "dynamodb:TagResource", "dynamodb:UntagResource", "kms:TagResource", "kms:UntagResource", "lambda:ListTags", "lambda:TagResource", "lambda:UntagResource" ] } ] }

 

2.4. Next: Tags. Next: Riveiw를 순차적으로 클릭합니다.

 

 2.5. Policy의 이름과 설명을 입력한 후, Create policy를 클릭하여 Policy를 생성합니다.

image-20240729-002911.png

 

Step2. AWS Role 생성

1. Role 생성 및 권한 부여

 1.1. AWS 콘솔 > IAM > Roles 이동 후 Create role을 클릭합니다.

 

 1.2. trusted entitiy에서 "Another AWS account"를 선택 후, Account ID 입력란에 "611495371442"을 입력합니다.

image-20240729-005245.png

 

 1.3. Attach permissions policies에서 Step1 에서 생성한 policy와 함께 ReadOnlyAccess를 선택합니다.

image-20240729-005325.png

 

 1.4. Role name을 반드시 CloudXper_Management_Role 로 입력 후, Create role을 클릭하여 Role을 생성합니다.

Step3. Trust relationships 설정

1. Trust relationships 변경

 1.1. Step2에서 생성한 Role을 검색 및 선택 후, Trust relationships 탭을 클릭합니다.

 

 1.2. Edit trust relationship을 클릭합니다.

image-20240729-005400.png

 

 1.3. Policy Document에 아래 내용을 입력합니다.

Trust relationship 용 JSON
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": {             "AWS": [                   "arn:aws:iam::611495371442:role/CrossAccountManagementRole",                   "arn:aws:iam::611495371442:role/CX-PROD-EKS-NODEGROUP-NodeInstanceRole-1HYC11PY1OT07"             ] }, "Action": "sts:AssumeRole" } ] }

 

 1.4. Update Trust Policy를 클릭하여 Trust relationships 설정을 완료합니다.

image-20240729-005436.png

 

AccessKey ID, Secret Access key를 통한 등록 가이드 (사용종료)

  • AWS 콘솔 혹은 API를 통해 직접 AccessKey ID와 Secret Access Key를 생성한 후, 생성된 정보를 CloudXper 사용 신청서에 기입하는 방식입니다.

Step1. AWS Policy 생성

1. 위의 "2. AWS Role을 통한 등록 가이드" 중 "Step1. AWS Policy 생성" 절차를 진행합니다.

Step2. AccessKey ID / Secret Access Key 생성

CloudXper 사용 신청서에 기입할 AccessKey ID와 Secret Access Key를 생성합니다.

1. AWS IAM User 생성 및 권한 부여

 1.1. AWS 콘솔 > IAM > Users 이동 후 Add user를 클릭합니다.

 

 1.2. 사용할 User name을 입력 후, access type에서 Programmatic access를 선택합니다.

image-20240729-005552.png

 

 1.3. Set permissions에서 "Attach existing policies directly"를 선택 후, 위에서 생성한 Policy와 함께 ReadOnlyAccess를 선택합니다.

image-20240729-005655.png

 

 1.4. Next: Tags. Next: Review, Create user를 순차적으로 클릭합니다.

 

 1.5. 생성된 Access Key ID와 Secret access key를 CloudXper 사용 신청서에 입력합니다.

image-20240729-005721.png

 

AWS 계정 설정 후속처리 요청

메모

계정 설정 후 관리자에게 아래의 정보를 필수로 전달하여 정상적인 기능 사용을 위한 후속 처리 요청을 진행해야 합니다 (관리자에게 요청은 TSC 포털 (문의사항 > 자원 수집 요청)을 통해 요청).

1.1. AWS Role 등록 가이드 인 경우 생성 한 Role의 ARN을 관리자에게 제공 합니다.

image-20240729-010038.png

1.2. AccessKey ID, Secret Access Key 등록 가이드 인 경우 생성 한 Account Id, AccessKey ID, Secret Access Key 정보 관리자에게 제공 합니다.

1.3 New ITSM 솔루션을 통해 CMDB 동기화 여부를 관리자에게 제공 합니다.

1.4 New ITSM 솔루션을 통해 자동 CSR 사용 여부를 관리자에게 제공 합니다.

 

AWS 약정 및 예약 구매 조회를 위한 가이드

메모

CloudXper Management Platform에서 약정 및 예약 구매에 대한 사용률 및 절감 비용 조회 기능을 이용하기 위해서는 상위 Payer 계정을 등록해야합니다.

1.1. 위에 작성된 '1.AWS Role을 통한 등록 가이드' 또는 '2.AccessKey ID, Secret Access key를 통한 등록 가이드'를 선택하여 Payer 계정을 등록합니다.

1.2. Role을 통해 등록하는 경우, Role Name은 'billing-cloudxper'로 지정합니다.

1.3. 이후 Policy Document에는 아래 내용을 입력합니다.

AWS 약정 및 예약 구매 수집 Policy
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [                "ce:Get*", "organizations:List*" ], "Resource": "*" } ] }

1.4. 계정 설정이 완료되면, 관리자에게 후속 처리를 요청합니다.

1.5. 추가적인 요청 사항은 TSC(Technical Support Center) 포털을 통해 요청할 수 있습니다.