AWS 클라우드 통합 역할 권한 구성¶
역할 권한을 사용하면 장기 Access Key와 Secret Key를 제공하지 않고도 AWS 클라우드 계정을 Guance에 연결할 수 있습니다.
이 문서의 절차에 따라 AWS 측 구성을 완료한 후 Guance로 돌아가 계정 ID와 역할 이름을 입력하면 클라우드 계정을 테스트하고 저장할 수 있습니다.
사전 준비¶
- 연결할 AWS 계정을 준비하고 해당 계정이 중국 리전 또는 글로벌 리전에 속하는지 확인합니다.
- 해당 AWS 계정에서 IAM 역할을 생성하고 역할에 인라인 정책을 추가할 권한이 있는지 확인합니다. 권한이 없는 경우 AWS 관리자에게 문의하세요.
- Guance에서 클라우드 계정을 추가할 수 있는지 확인합니다.
이 문서는 Access Key와 Secret Key를 입력할 필요가 없는 역할 권한 방식에 적용됩니다.
1단계: 권한 정보 수집¶
- Guance에서 통합 > 클라우드 계정 관리로 이동하여 AWS 클라우드 계정을 생성합니다.
- 인증 방식 선택에서 역할 권한을 선택합니다.
- 연결할 AWS 계정에 따라 중국 리전 또는 글로벌 리전을 선택합니다.
- 페이지에 표시된 Guance 계정 ID(AWS)와 외부 ID를 복사합니다. 이 페이지를 유지해 두세요. 이후 구성에서 필요합니다.
여기서 복사하는 것은 Guance 플랫폼에서 제공하는 계정 ID이며, 사용자 본인의 AWS 계정 ID가 아닙니다. 외부 ID는 Guance 플랫폼에서 자동으로 생성되므로 다른 값을 직접 입력하지 마세요.
2단계: AWS에서 신뢰할 수 있는 엔터티 선택¶
- 연결할 AWS 계정에 로그인하고 IAM 콘솔에서 역할 > 역할 생성으로 이동합니다.
- 신뢰할 수 있는 엔터티 선택 페이지에서 신뢰할 수 있는 엔터티 유형을 AWS 계정으로 설정합니다. 중국 리전 콘솔에서는 아마존 클라우드 계정으로 표시됩니다.
- 다른 AWS 계정을 선택합니다. 중국 리전 콘솔에서는 다른 아마존 클라우드 계정으로 표시됩니다.
- 계정 ID에 1단계에서 복사한 Guance 계정 ID(AWS), 즉 Guance 플랫폼에서 제공하는 12자리 계정 ID를 입력합니다.
- 외부 ID 필요를 선택하고 외부 ID에 1단계에서 현재 클라우드 계정 구성 페이지에서 복사한 값을 붙여넣습니다.
- 계정 ID와 외부 ID를 확인한 후 다음을 클릭하여 권한 추가 페이지로 이동합니다.
이 단계의 계정 ID는 Guance 플랫폼에서 제공하는 AWS 계정 ID입니다. Guance 플랫폼에서 클라우드 계정 정보를 입력할 때는 역할을 직접 생성한 사용자 본인의 AWS 계정 ID를 입력합니다.
3단계: 인라인 정책 추가 및 역할 생성¶
- 권한 추가 페이지에서 인라인 정책 생성을 선택합니다.
-
아래 내용을 펼쳐 전체 JSON을 복사하고 정책 편집기의 기본 내용을 교체합니다.
수집 권한 정책 JSON 펼치기
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "account:GetAccountInformation", "acm:ListCertificates", "airflow:GetEnvironment", "airflow:ListEnvironments", "aoss:ListCollections", "apigateway:GET", "appsync:ListGraphqlApis", "appsync:ListTagsForResource", "autoscaling:Describe*", "aws-portal:ViewBilling", "backup:DescribeBackupVault", "backup:List*", "batch:DescribeJobDefinitions", "batch:DescribeJobQueues", "batch:DescribeJobs", "batch:ListJobs", "bcm-data-exports:GetExport", "bcm-data-exports:ListExports", "budgets:ViewBudget", "ce:GetCostAndUsageWithResources", "ce:GetDimensionValues", "cloudfront:GetDistributionConfig", "cloudfront:ListDistributions", "cloudfront:ListTagsForResource", "cloudtrail:DescribeTrails", "cloudtrail:GetTrail", "cloudtrail:GetTrailStatus", "cloudtrail:ListTrails", "cloudtrail:LookupEvents", "cloudwatch:Describe*", "cloudwatch:Get*", "cloudwatch:List*", "codebuild:BatchGetProjects", "codebuild:ListProjects", "codedeploy:BatchGet*", "codedeploy:List*", "cognito-idp:DescribeUserPool", "cognito-idp:ListUserPools", "cost-optimization-hub:GetRecommendation", "cost-optimization-hub:ListRecommendations", "cur:DescribeReportDefinitions", "dax:DescribeClusters", "directconnect:Describe*", "dms:DescribeReplicationInstances", "dms:DescribeReplicationTasks", "dms:ListTagsForResource", "dsql:GetCluster", "dsql:ListClusters", "dsql:ListTagsForResource", "dynamodb:Describe*", "dynamodb:List*", "ec2:Describe*", "ecr:DescribeRepositories", "ecs:Describe*", "ecs:List*", "eks:DescribeCluster", "eks:ListClusters", "elasticache:Describe*", "elasticache:List*", "elasticbeanstalk:DescribeEnvironments", "elasticfilesystem:DescribeAccessPoints", "elasticfilesystem:DescribeFileSystems", "elasticfilesystem:DescribeTags", "elasticloadbalancing:Describe*", "elasticmapreduce:Describe*", "elasticmapreduce:List*", "es:DescribeDomains", "es:DescribeElasticsearchDomains", "es:ListDomainNames", "es:ListTags", "events:CreateEventBus", "events:ListRules", "firehose:DescribeDeliveryStream", "firehose:ListDeliveryStreams", "fsx:DescribeFileSystems", "fsx:ListTagsForResource", "globalaccelerator:ListAccelerators", "glue:BatchGetJobs", "glue:GetJob", "glue:GetJobRuns", "glue:GetJobs", "glue:ListJobs", "health:DescribeAffectedEntities", "health:DescribeEventDetails", "health:DescribeEvents", "healthlake:DescribeFHIRDatastore", "healthlake:ListFHIRDatastores", "healthlake:ListTagsForResource", "iam:GetAccountAuthorizationDetails", "iam:GetLoginProfile", "iam:GetPolicyVersion", "iam:GetRole", "iam:ListAccountAliases", "iam:ListAttachedRolePolicies", "iam:ListAttachedUserPolicies", "iam:ListGroupsForUser", "iam:ListMFADevices", "iam:ListPolicies", "iam:ListPolicyTags", "iam:ListRoleTags", "iam:ListSSHPublicKeys", "iam:ListUserTags", "iam:ListUsers", "iam:ListVirtualMFADevices", "iot:GetV2LoggingOptions", "kafka:ListClustersV2", "kafkaconnect:DescribeConnector", "kafkaconnect:ListConnectors", "kinesis:Describe*", "kinesis:List*", "kinesisanalytics:ListApplications", "kms:DescribeKey", "kms:ListKeys", "lambda:GetFunctionConfiguration", "lambda:GetMicrovmImageVersion", "lambda:List*", "logs:DeleteSubscriptionFilter", "logs:DescribeDeliveries", "logs:DescribeDeliverySources", "logs:DescribeLogGroups", "logs:DescribeLogStreams", "logs:DescribeSubscriptionFilters", "logs:FilterLogEvents", "logs:GetDeliveryDestination", "logs:ListTagsForResource", "logs:PutSubscriptionFilter", "logs:TestMetricFilter", "memorydb:DescribeClusters", "memorydb:ListTags", "mq:ListBrokers", "network-firewall:DescribeFirewall", "network-firewall:DescribeLoggingConfiguration", "network-firewall:ListFirewalls", "oam:ListAttachedLinks", "oam:ListSinks", "organizations:Describe*", "organizations:List*", "pcs:ListClusters", "pcs:ListComputeNodeGroups", "pcs:ListQueues", "rds:Describe*", "rds:List*", "redshift-serverless:ListNamespaces", "redshift-serverless:ListTagsForResource", "redshift-serverless:ListWorkgroups", "redshift:DescribeClusters", "redshift:DescribeLoggingStatus", "route53:List*", "route53resolver:ListResolverQueryLogConfigs", "s3:GetBucketAcl", "s3:GetBucketLocation", "s3:GetBucketLogging", "s3:GetBucketNotification", "s3:GetBucketPolicy", "s3:GetBucketPolicyStatus", "s3:GetBucketPublicAccessBlock", "s3:GetBucketTagging", "s3:GetBucketVersioning", "s3:GetBucketWebsite", "s3:GetEncryptionConfiguration", "s3:GetLifecycleConfiguration", "s3:GetObject", "s3:GetReplicationConfiguration", "s3:ListAllMyBuckets", "s3:ListBucket", "s3:PutBucketNotification", "sagemaker:DescribeEndpoint", "sagemaker:ListEndpoints", "secretsmanager:DescribeSecret", "secretsmanager:ListSecrets", "ses:Get*", "ses:List*", "sns:GetSubscriptionAttributes", "sns:GetTopicAttributes", "sns:List*", "sns:Publish", "sqs:GetQueueAttributes", "sqs:GetQueueUrl", "sqs:ListQueueTags", "sqs:ListQueues", "ssm:GetServiceSetting", "ssm:ListCommands", "states:DescribeStateMachine", "states:ListStateMachines", "states:ListTagsForResource", "storagegateway:DescribeGatewayInformation", "storagegateway:DescribeNFSFileShares", "storagegateway:DescribeSMBFileShares", "storagegateway:ListFileShares", "storagegateway:ListGateways", "support:DescribeTrustedAdvisor*", "support:RefreshTrustedAdvisorCheck", "tag:GetResources", "tag:GetTagKeys", "tag:GetTagValues", "timestream:DescribeEndpoints", "trustedadvisor:ListRecommendationResources", "trustedadvisor:ListRecommendations", "wafv2:GetWebACL", "wafv2:ListLoggingConfigurations", "wafv2:ListWebACLs", "xray:BatchGetTraces", "xray:GetTraceSummaries" ], "Resource": "*" } ] }위 목록은 기본 수집에 필요한 전체 권한 목록이므로 전체를 복사하세요.
-
AWS 페이지의 안내에 따라 권한 범위를 확인하고 오류 또는 보안 경고를 처리한 후 다음을 클릭합니다. 조직의 요구 사항에 부합하는지 확실하지 않은 경우 AWS 관리자에게 검토를 요청하세요.
- 이름, 검토 및 생성 페이지에서 페이지의 안내에 따라 역할 이름을 입력합니다(예:
CloudIntegrationRole). 구성을 확인한 후 역할 생성을 클릭합니다. - 생성한 역할 이름과 해당 역할이 속한 AWS 계정 ID를 기록해 두세요. 다음 단계에서 입력해야 합니다.
4단계: Guance 플랫폼에서 계정 정보 입력¶
1단계에서 유지해 둔 클라우드 계정 구성 페이지로 돌아가 다음 정보를 입력합니다.
| 구성 항목 | 입력 설명 |
|---|---|
| 계정 ID | 본인의 AWS 계정 ID를 입력합니다. 즉, 3단계에서 역할을 생성한 계정입니다. 페이지 상단에 표시된 Guance 플랫폼 계정 ID를 입력하지 마세요. |
| 역할 이름 | 3단계에서 생성한 역할 이름을 입력합니다(예: CloudIntegrationRole). 전체 역할 ARN을 입력할 필요는 없습니다. |
| 계정 별칭 | 해당 클라우드 계정을 식별하기 쉬운 이름을 입력합니다. 수집된 데이터에도 이 별칭이 포함됩니다. |
| 계정 태그 | 필요에 따라 태그 이름과 값을 추가합니다(예: 이름이 env, 값이 production). 추가를 클릭합니다. 필요하지 않으면 비워 둘 수 있습니다. 입력 규칙은 계정 태그를 참조하세요. |
5단계: 테스트 및 저장¶
- 테스트를 클릭하여 현재 권한 구성을 확인합니다.
- 테스트가 통과하면 저장을 클릭합니다.
- 통합 구성의 안내에 따라 필요한 AWS 통합을 설치하고 데이터가 보고되는지 확인합니다.
클라우드 계정을 저장한 후에도 해당 통합을 설치해야 데이터 수집을 시작할 수 있습니다.
자주 묻는 질문¶
테스트가 실패하면 어떻게 하나요?¶
먼저 다음 정보를 확인하고 수정한 후 다시 테스트하세요.
- 리전이 올바르게 선택되었는지 확인합니다.
- 계정 ID가 역할을 생성한 AWS 계정 ID인지 확인합니다.
- 역할 이름이 AWS의 역할 이름과 일치하는지 확인합니다.
- 역할 신뢰 관계의 계정 ID가 선택한 리전의 Guance 플랫폼 AWS 계정 ID인지 확인합니다.
- 외부 ID 필요를 선택했는지, 입력한 외부 ID가 현재 클라우드 계정 구성 페이지의 값과 완전히 일치하는지 확인합니다.
그래도 통과하지 못하면 구체적인 오류 메시지를 AWS 관리자 또는 Guance 지원 담당자에게 제공하여 문제 해결을 요청하세요.
테스트를 통과했는데 데이터가 수집되지 않는 이유는 무엇인가요?¶
해당 AWS 통합이 설치 및 활성화되었는지, 올바른 수집 리전을 선택했는지, 3단계에서 역할에 전체 수집 권한 인라인 정책을 추가했는지 확인하세요. 수집 중 권한 부족 오류가 발생하면 AWS 관리자에게 문의하여 구체적인 오류에 따라 확인하세요.
외부 ID를 다시 생성한 후에는 어떻게 해야 하나요?¶
AWS 역할 신뢰 정책의 외부 ID도 함께 업데이트해야 합니다. 양쪽이 일치하지 않으면 이후 권한 부여가 실패하여 수집에 영향을 줄 수 있습니다. 이미 수집 중인 계정이라면 먼저 Guance 지원 담당자에게 연락하여 업데이트 절차를 확인하세요.