AWS Control Tower 역할을 사용하여 계정을 만들고 관리하는 방법 - AWS Control Tower

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

AWS Control Tower 역할을 사용하여 계정을 만들고 관리하는 방법

일반적으로 역할은 AWS에서 자격 증명 및 액세스 관리 (IAM) 의 일부입니다. 항목을 참조하십시오.AWS Control Tower 콘솔 사용에 필요한 권한AWS Control Tower 에 필요한 역할에 대한 자세한 내용을 참조하십시오. AWS의 IAM 및 역할에 대한 일반적인 내용은 단원을 참조하십시오.의 IAM 역할 주제AWS IAM 사용 설명서.

역할 및 계정 생성

AWS Control Tower에서CreateAccountAPIAWS Organizations. 일시AWS Organizations이 계정이 생성되면 해당 계정 내에 역할을 생성합니다. 역할의 이름은 가 파라미터를 API로 전달하여 지정합니다. 역할의 이름은 AWSControlTowerExecution입니다.

AWS Control Tower는AWSControlTowerExecution계정 팩토리에서 생성한 모든 계정에 대한 역할 이 역할을 사용하여 AWS Control Tower기준선이 계정은 필수 (및 기타 활성화된) 가드레일을 적용하여 다른 역할을 생성합니다. 이러한 역할은 AWS Config 같은 다른 서비스에서 사용됩니다.

참고

아래 번호로 일정하게 높입니다.기준선계정은 다음과 같은 리소스를 설정하는 것입니다.Account Factory 템플릿, 때때로청사진, 그리고 가드레일. 또한 기준 설정 프로세스는 템플릿 배포의 일환으로 중앙 집중식 로깅 및 보안 감사 역할을 설정합니다. AWS Control Tower 기준선은 등록된 모든 계정에 적용하는 역할에 포함됩니다.

계정 및 리소스에 대한 자세한 내용은 단원을 참조하십시오.AWS 컨트롤 타워의 AWS 계정 정보.

이 AWSControlTowerExecution 역할 설명

AWSControlTowerExecution등록된 모든 계정에 역할이 있어야 합니다. AWS Control Tower는 개별 계정을 관리하고 해당 계정에 대한 정보를 감사 및 로그 아카이브 계정에 보고할 수 있습니다.

AWSControlTowerExecution역할을 다음과 같이 여러 가지 방법으로 계정에 추가할 수 있습니다.

  • 보안 OU에 있는 계정의 경우 (라고도 함)코어 계정), AWS Control Tower 타워는 초기 AWS Control Tower 타워를 설정할 때 역할을 생성합니다.

  • AWS Control Tower 콘솔을 통해 생성된 Account Factory 계정의 경우 AWS Control Tower Tower는 계정 생성 시 이 역할을 생성합니다.

  • 단일 계정 등록의 경우 고객에게 역할을 수동으로 생성한 다음 AWS Control Tower 에 계정을 등록하도록 요청합니다.

  • 거버넌스를 OU로 확장할 때 AWS Control Tower 타워는Stackset-awsControl TowerExecution역할를 눌러 해당 OU의 모든 계정에서 역할을 생성합니다.

의 목적AWSControlTowerExecution역할:

  • AWSControlTowerExecution스크립트 및 Lambda 함수를 사용하여 자동으로 계정을 생성하고 등록할 수 있습니다.

  • AWSControlTowerExecution을 통해 전체 계정의 모든 로그가 로깅 계정으로 전송되도록 조직의 로깅을 구성할 수 있습니다.

  • AWSControlTowerExecutionAWS Control Tower 에 개별 계정을 등록할 수 있습니다. 먼저 를 추가해야 합니다.AWSControlTowerExecution해당 계정에 대한 역할 역할을 추가하는 단계는 단원을 참조하십시오.기존 AWS 계정에 필요한 IAM 역할을 수동으로 추가하고 등록하십시오..

방법AWSControlTowerExecution역할은 OU에서 작동합니다.

AWSControlTowerExecution역할을 통해 선택한 AWS Control Tower 가드레일은 AWS Control Tower 에서 생성하는 모든 새 계정과 각 OU의 모든 개별 계정에 자동으로 적용되도록 합니다. 결과:

  • AWS Control Tower Tower에서 구현한 감사 및 로깅 기능에 따라 규정 준수 및 보안 보고서를 보다 쉽게 제공할 수 있습니다.가드레일.

  • 보안 및 규정 준수 팀은 모든 요구 사항이 충족되었는지 그리고 조직 드리프트가 발생하지 않았는지 확인할 수 있습니다.

드리프트에 대한 자세한 내용은 단원을 참조하세요.AWS Control Tower 타워에서 드리프트 감지 및 해결.

요약하면 AWSControlTowerExecution 역할 및 관련 정책을 통해 조직 전체에서 보안 및 규정 준수를 유연하게 제어할 수 있습니다. 따라서 보안 또는 프로토콜 침해가 발생할 가능성이 적어집니다.

역할 신뢰 관계에 대한 선택적 조건

역할 신뢰 정책에 조건을 적용하여 AWS Control Tower Tower의 특정 역할과 상호 작용하는 계정 및 리소스를 제한할 수 있습니다. 에 대한 액세스를 제한하는 것이 좋습니다.AWSControlTowerAdmin역할. 광범위한 액세스 권한을 허용하기 때문입니다.

공격자가 리소스에 액세스하지 못하도록 하려면 AWS Control Tower 신뢰 정책을 수동으로 편집하여 하나 이상의 추가aws:SourceArn또는aws:SourceAccount정책 설명을 조건으로 지정합니다. 보안 모범 사례로aws:SourceArn조건, 보다 더 구체적이기 때문에aws:SourceAccount를 사용하여 특정 계정 및 특정 리소스에 대한 액세스를 제한합니다.

리소스의 전체 ARN을 모르거나 여러 리소스를 지정하는 경우aws:SourceArnARN의 알 수 없는 부분에 대해 와일드카드 (*) 가 있는 조건입니다. 예,arn:aws:controltower:*:123456789012:*리전을 지정하지 않으려는 경우 작동합니다.

다음 예시에서는aws:SourceArnIAM 역할 신뢰 정책과 함께 IAM 조건입니다. 의 신뢰 관계에 조건을 추가합니다.AWSControlTowerAdmin역할. AWS Control Tower 서비스 주체가 이 서비스와 상호 작용하기 때문입니다.

예에서 볼 수 있듯이 소스 ARN의 형식은 다음과 같습니다.arn:aws:controltower:${HOME_REGION}:${CUSTOMER_AWSACCOUNT_id}:*

문자열 바꾸기${HOME_REGION}${CUSTOMER_AWSACCOUNT_id}본인의 홈 지역 및 통화 계정의 계정 ID가 포함되어 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "controltower.amazonaws.com" ] }, "Action": "sts:AssumeRole", "Condition": { "ArnEquals": { "aws:SourceArn": "arn:aws:controltower:us-west-2:012345678901:*" } } } ] }

이 예에서 소스 ARN은 다음과 같이 지정됩니다.arn:aws:controltower:us-west-2:012345678901:*수행할 수 있는 유일한 ARN입니다.sts:AssumeRoleaction. 즉, 계정 ID에 로그인할 수 있는 사용자만012345678901, 에서us-west-2리전은 AWS Control Tower 서비스에 대해 이 특정 역할 및 신뢰 관계가 필요한 작업을 수행할 수 있습니다.controltower.amazonaws.com.

다음 예제에서는aws:SourceAccountaws:SourceArn역할 신뢰 정책에 적용되는 조건입니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "controltower.amazonaws.com" ] }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "012345678901" }, "StringLike": { "aws:SourceArn": "arn:aws:controltower:us-west-2:012345678901:*" } } } ] }

이 예제는aws:SourceArn조건문, 추가됨aws:SourceAccount조건 문. 자세한 정보는 교차 서비스 사칭 방지을 참조하십시오.

AWS Control Tower Tower의 권한 정책에 대한 일반 정보는 섹션을 참조하세요.리소스에 대한 액세스 관리.

권장 사항:

AWS Control Tower 가 생성하는 역할에 조건을 추가하는 것이 좋습니다. 이러한 역할은 다른 AWS 서비스에서 직접 가정하기 때문입니다. 자세한 내용은 예제를 참조하십시오.AWSControlTowerAdmin이전에 이 섹션에 나와 있습니다. 이AWS Config레코더 역할, 추가 하는 것이 좋습니다.aws:SourceArn조건, Config 레코더 ARN을 허용된 소스 ARN으로 지정합니다.

다음과 같은 역할의 경우AWS제어기확장또는모든 관리형 계정에서 AWS Control Tower 감사 계정으로 가정할 수 있는 역할를 추가하는 것이 좋습니다.aws:SourceArn이러한 역할에 대한 조건aws:PrincipalOrgID는 리소스에 액세스하는 보안 주체가 올바른 AWS 조직의 계정에 속하는지 확인합니다.

참고

드리프트의 경우 특정 상황에서 AWS Control Tower 역할이 재설정될 수 있습니다. 역할을 사용자 정의한 경우 주기적으로 역할을 다시 확인하는 것이 좋습니다.

AWS Control Tower Config레코더

AWS Control Tower Tower는 로그 아카이브 계정, 감사 계정 및 계정 팩토리에서 생성한 각 계정에 리소스로 이 역할을 배포합니다. 역할은 다음과 같이 가정할 수 있습니다.AWS Config역할 신뢰 관계 아티팩트에 나와 있는 것처럼 이 섹션의 뒷부분에 나와 있습니다. 이 역할의 길이는 1000줄이 넘습니다. 여러 작업을 여러 번 허용하기 때문입니다.AWS서비스. 역할은 다음에 대한 권한을 부여합니다.AWS Config구성을 기록하고 전송 채널로 전달할 수 있습니다.

참고

이 IAM 역할을 생성할 때 AWS Control Tower Tower에서 를 관리할 수 있는 권한을 부여합니다.AWS Config이 역할에 대한 권한 정책에 정의된 리소스입니다. AWS Control Tower 타워에서 이 역할을 처음 사용하는 경우AWS Config새 을 생성할 수 있습니다.서비스 연결 역할계정에서 을 입력합니다. 역할 부여AWS Config기타에 대한 액세스 권한AWS원래 AWS Control Tower 요청을 완료하는 데 필요한 리소스입니다.

방법을 자세히 알아볼 수 있습니다.AWS Config또는 기타 서비스에서 서비스 연결 역할을 만들고 사용합니다.IAM에서 작동하는 AWS 서비스. 이 서비스를 찾아보십시오.서비스 연결 역할이 열은 서비스 연결 역할 사용을 지원함을 나타냅니다. 해당 서비스에 대한 서비스 연결 역할 설명서를 보려면 예(Yes) 링크를 선택합니다.

AWS 서비스 연결 역할에 대한 정의는 단원을 참조하십시오.AWS 서비스 연결 역할.

역할 이름:aws-controltower-ConfigRecorderRole

다음 계정에 배포됩니다. 로그 아카이브, 감사, 계정 팩토리 계정

수임된 항목:AWS Config

AWS 관리형 정책:

다음 JSON 아티팩트는 역할을 보여 줍니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "a4b:Get*", "a4b:List*", "a4b:Search*", "access-analyzer:GetAccessPreview", "access-analyzer:GetAnalyzedResource", "access-analyzer:GetAnalyzer", "access-analyzer:GetArchiveRule", "access-analyzer:GetFinding", "access-analyzer:GetGeneratedPolicy", "access-analyzer:ListAccessPreviewFindings", "access-analyzer:ListAccessPreviews", "access-analyzer:ListAnalyzedResources", "access-analyzer:ListAnalyzers", "access-analyzer:ListArchiveRules", "access-analyzer:ListFindings", "access-analyzer:ListPolicyGenerations", "access-analyzer:ListTagsForResource", "access-analyzer:ValidatePolicy", "acm-pca:Describe*", "acm-pca:Get*", "acm-pca:List*", "acm:Describe*", "acm:Get*", "acm:List*", "airflow:ListEnvironments", "airflow:ListTagsForResource", "amplify:GetApp", "amplify:GetBranch", "amplify:GetDomainAssociation", "amplify:GetJob", "amplify:ListApps", "amplify:ListBranches", "amplify:ListDomainAssociations", "amplify:ListJobs", "apigateway:GET", "appconfig:GetApplication", "appconfig:GetConfiguration", "appconfig:GetConfigurationProfile", "appconfig:GetDeployment", "appconfig:GetDeploymentStrategy", "appconfig:GetEnvironment", "appconfig:GetHostedConfigurationVersion", "appconfig:ListApplications", "appconfig:ListConfigurationProfiles", "appconfig:ListDeployments", "appconfig:ListDeploymentStrategies", "appconfig:ListEnvironments", "appconfig:ListHostedConfigurationVersions", "appconfig:ListTagsForResource", "application-autoscaling:Describe*", "applicationinsights:Describe*", "applicationinsights:List*", "appmesh:Describe*", "appmesh:List*", "appstream:Describe*", "appstream:List*", "appsync:Get*", "appsync:List*", "aps:DescribeAlertManagerDefinition", "aps:DescribeRuleGroupsNamespace", "aps:DescribeWorkspace", "aps:GetAlertManagerSilence", "aps:GetAlertManagerStatus", "aps:GetLabels", "aps:GetMetricMetadata", "aps:GetSeries", "aps:ListAlerts", "aps:ListAlertManagerAlerts", "aps:ListAlertManagerAlertGroups", "aps:ListAlertManagerReceivers", "aps:ListAlertManagerSilences", "aps:ListRules", "aps:ListRuleGroupsNamespaces", "aps:ListTagsForResource", "aps:ListWorkspaces", "aps:QueryMetrics", "athena:Batch*", "athena:Get*", "athena:List*", "auditmanager:GetAccountStatus", "auditmanager:GetAssessment", "auditmanager:GetAssessmentFramework", "auditmanager:GetAssessmentReportUrl", "auditmanager:GetChangeLogs", "auditmanager:GetControl", "auditmanager:GetDelegations", "auditmanager:GetEvidence", "auditmanager:GetEvidenceByEvidenceFolder", "auditmanager:GetEvidenceFolder", "auditmanager:GetEvidenceFoldersByAssessment", "auditmanager:GetEvidenceFoldersByAssessmentControl", "auditmanager:GetOrganizationAdminAccount", "auditmanager:GetServicesInScope", "auditmanager:GetSettings", "auditmanager:ListAssessmentFrameworks", "auditmanager:ListAssessmentReports", "auditmanager:ListAssessments", "auditmanager:ListControls", "auditmanager:ListKeywordsForDataSource", "auditmanager:ListNotifications", "auditmanager:ListTagsForResource", "auditmanager:ValidateAssessmentReportIntegrity", "autoscaling-plans:Describe*", "autoscaling-plans:GetScalingPlanResourceForecastData", "autoscaling:Describe*", "aws-portal:View*", "backup:Describe*", "backup:Get*", "backup:List*", "batch:Describe*", "batch:List*", "braket:GetDevice", "braket:GetQuantumTask", "braket:SearchDevices", "braket:SearchQuantumTasks", "budgets:Describe*", "budgets:View*", "cassandra:Select", "ce:DescribeCostCategoryDefinition", "ce:DescribeNotificationSubscription", "ce:DescribeReport", "ce:GetAnomalies", "ce:GetAnomalyMonitors", "ce:GetAnomalySubscriptions", "ce:GetCostAndUsage", "ce:GetCostAndUsageWithResources", "ce:GetCostCategories", "ce:GetCostForecast", "ce:GetDimensionValues", "ce:GetPreferences", "ce:GetReservationCoverage", "ce:GetReservationPurchaseRecommendation", "ce:GetReservationUtilization", "ce:GetRightsizingRecommendation", "ce:GetSavingsPlansCoverage", "ce:GetSavingsPlansPurchaseRecommendation", "ce:GetSavingsPlansUtilization", "ce:GetSavingsPlansUtilizationDetails", "ce:GetTags", "ce:GetUsageForecast", "ce:ListCostCategoryDefinitions", "chatbot:Describe*", "chatbot:Get*", "chime:Get*", "chime:List*", "chime:Retrieve*", "chime:Search*", "chime:Validate*", "cloud9:Describe*", "cloud9:List*", "clouddirectory:BatchRead", "clouddirectory:Get*", "clouddirectory:List*", "clouddirectory:LookupPolicy", "cloudformation:Describe*", "cloudformation:Detect*", "cloudformation:Estimate*", "cloudformation:Get*", "cloudformation:List*", "cloudfront:DescribeFunction", "cloudfront:Get*", "cloudfront:List*", "cloudhsm:Describe*", "cloudhsm:Get*", "cloudhsm:List*", "cloudsearch:Describe*", "cloudsearch:List*", "cloudtrail:Describe*", "cloudtrail:Get*", "cloudtrail:List*", "cloudtrail:LookupEvents", "cloudwatch:Describe*", "cloudwatch:Get*", "cloudwatch:List*", "codeartifact:DescribeDomain", "codeartifact:DescribePackageVersion", "codeartifact:DescribeRepository", "codeartifact:GetAuthorizationToken", "codeartifact:GetDomainPermissionsPolicy", "codeartifact:GetPackageVersionAsset", "codeartifact:GetPackageVersionReadme", "codeartifact:GetRepositoryEndpoint", "codeartifact:GetRepositoryPermissionsPolicy", "codeartifact:ListDomains", "codeartifact:ListPackages", "codeartifact:ListPackageVersionAssets", "codeartifact:ListPackageVersionDependencies", "codeartifact:ListPackageVersions", "codeartifact:ListRepositories", "codeartifact:ListRepositoriesInDomain", "codeartifact:ListTagsForResource", "codeartifact:ReadFromRepository", "codebuild:BatchGet*", "codebuild:DescribeCodeCoverages", "codebuild:DescribeTestCases", "codebuild:List*", "codecommit:BatchGet*", "codecommit:Describe*", "codecommit:Get*", "codecommit:GitPull", "codecommit:List*", "codedeploy:BatchGet*", "codedeploy:Get*", "codedeploy:List*", "codeguru-profiler:Describe*", "codeguru-profiler:Get*", "codeguru-profiler:List*", "codeguru-reviewer:Describe*", "codeguru-reviewer:Get*", "codeguru-reviewer:List*", "codepipeline:Get*", "codepipeline:List*", "codestar-connections:GetConnection", "codestar-connections:GetHost", "codestar-connections:ListConnections", "codestar-connections:ListHosts", "codestar-connections:ListTagsForResource", "codestar-notifications:describeNotificationRule", "codestar-notifications:listEventTypes", "codestar-notifications:listNotificationRules", "codestar-notifications:listTagsForResource", "codestar-notifications:ListTargets", "codestar:Describe*", "codestar:Get*", "codestar:List*", "codestar:Verify*", "cognito-identity:Describe*", "cognito-identity:GetCredentialsForIdentity", "cognito-identity:GetIdentityPoolRoles", "cognito-identity:GetOpenIdToken", "cognito-identity:GetOpenIdTokenForDeveloperIdentity", "cognito-identity:List*", "cognito-identity:Lookup*", "cognito-idp:AdminGet*", "cognito-idp:AdminList*", "cognito-idp:Describe*", "cognito-idp:Get*", "cognito-idp:List*", "cognito-sync:Describe*", "cognito-sync:Get*", "cognito-sync:List*", "cognito-sync:QueryRecords", "compute-optimizer:DescribeRecommendationExportJobs", "compute-optimizer:GetAutoScalingGroupRecommendations", "compute-optimizer:GetEBSVolumeRecommendations", "compute-optimizer:GetEC2InstanceRecommendations", "compute-optimizer:GetEC2RecommendationProjectedMetrics", "compute-optimizer:GetEnrollmentStatus", "compute-optimizer:GetEnrollmentStatusesForOrganization", "compute-optimizer:GetLambdaFunctionRecommendations", "compute-optimizer:GetRecommendationSummaries", "config:BatchGetAggregateResourceConfig", "config:BatchGetResourceConfig", "config:Deliver*", "config:Describe*", "config:Get*", "config:List*", "config:SelectAggregateResourceConfig", "config:SelectResourceConfig", "connect:Describe*", "connect:GetFederationToken", "connect:List*", "dataexchange:Get*", "dataexchange:List*", "datapipeline:Describe*", "datapipeline:EvaluateExpression", "datapipeline:Get*", "datapipeline:List*", "datapipeline:QueryObjects", "datapipeline:Validate*", "datasync:Describe*", "datasync:List*", "dax:BatchGetItem", "dax:Describe*", "dax:GetItem", "dax:ListTags", "dax:Query", "dax:Scan", "deepcomposer:GetComposition", "deepcomposer:GetModel", "deepcomposer:GetSampleModel", "deepcomposer:ListCompositions", "deepcomposer:ListModels", "deepcomposer:ListSampleModels", "deepcomposer:ListTrainingTopics", "detective:Get*", "detective:List*", "detective:SearchGraph", "devicefarm:Get*", "devicefarm:List*", "devops-guru:DescribeAccountHealth", "devops-guru:DescribeAccountOverview", "devops-guru:DescribeAnomaly", "devops-guru:DescribeFeedback", "devops-guru:DescribeInsight", "devops-guru:DescribeResourceCollectionHealth", "devops-guru:DescribeServiceIntegration", "devops-guru:GetCostEstimation", "devops-guru:GetResourceCollection", "devops-guru:ListAnomaliesForInsight", "devops-guru:ListEvents", "devops-guru:ListInsights", "devops-guru:ListNotificationChannels", "devops-guru:ListRecommendations", "devops-guru:SearchInsights", "devops-guru:StartCostEstimation", "directconnect:Describe*", "discovery:Describe*", "discovery:Get*", "discovery:List*", "dlm:Get*", "dms:Describe*", "dms:List*", "dms:Test*", "ds:Check*", "ds:Describe*", "ds:Get*", "ds:List*", "ds:Verify*", "dynamodb:BatchGet*", "dynamodb:Describe*", "dynamodb:Get*", "dynamodb:List*", "dynamodb:Query", "dynamodb:Scan", "ec2:Describe*", "ec2:Get*", "ec2:SearchTransitGatewayRoutes", "ec2messages:Get*", "ecr-public:BatchCheckLayerAvailability", "ecr-public:DescribeImages", "ecr-public:DescribeImageTags", "ecr-public:DescribeRegistries", "ecr-public:DescribeRepositories", "ecr-public:GetAuthorizationToken", "ecr-public:GetRegistryCatalogData", "ecr-public:GetRepositoryCatalogData", "ecr-public:GetRepositoryPolicy", "ecr-public:ListTagsForResource", "ecr:BatchCheck*", "ecr:BatchGet*", "ecr:Describe*", "ecr:Get*", "ecr:List*", "ecs:Describe*", "ecs:List*", "eks:Describe*", "eks:List*", "elasticache:Describe*", "elasticache:List*", "elasticbeanstalk:Check*", "elasticbeanstalk:Describe*", "elasticbeanstalk:List*", "elasticbeanstalk:Request*", "elasticbeanstalk:Retrieve*", "elasticbeanstalk:Validate*", "elasticfilesystem:Describe*", "elasticloadbalancing:Describe*", "elasticmapreduce:Describe*", "elasticmapreduce:GetBlockPublicAccessConfiguration", "elasticmapreduce:List*", "elasticmapreduce:View*", "elastictranscoder:List*", "elastictranscoder:Read*", "elemental-appliances-software:Get*", "elemental-appliances-software:List*", "es:Describe*", "es:ESHttpGet", "es:ESHttpHead", "es:Get*", "es:List*", "events:Describe*", "events:List*", "events:Test*", "firehose:Describe*", "firehose:List*", "fis:GetAction", "fis:GetExperiment", "fis:GetExperimentTemplate", "fis:ListActions", "fis:ListExperiments", "fis:ListExperimentTemplates", "fis:ListTagsForResource", "fms:GetAdminAccount", "fms:GetAppsList", "fms:GetComplianceDetail", "fms:GetNotificationChannel", "fms:GetPolicy", "fms:GetProtectionStatus", "fms:GetProtocolsList", "fms:GetViolationDetails", "fms:ListAppsLists", "fms:ListComplianceStatus", "fms:ListMemberAccounts", "fms:ListPolicies", "fms:ListProtocolsLists", "fms:ListTagsForResource", "forecast:DescribeDataset", "forecast:DescribeDatasetGroup", "forecast:DescribeDatasetImportJob", "forecast:DescribeForecast", "forecast:DescribeForecastExportJob", "forecast:DescribePredictor", "forecast:DescribePredictorBacktestExportJob", "forecast:GetAccuracyMetrics", "forecast:ListDatasetGroups", "forecast:ListDatasetImportJobs", "forecast:ListDatasets", "forecast:ListForecastExportJobs", "forecast:ListForecasts", "forecast:ListPredictorBacktestExportJobs", "forecast:ListPredictors", "forecast:QueryForecast", "freertos:Describe*", "freertos:List*", "fsx:Describe*", "fsx:List*", "gamelift:Describe*", "gamelift:Get*", "gamelift:List*", "gamelift:ResolveAlias", "gamelift:Search*", "glacier:Describe*", "glacier:Get*", "glacier:List*", "globalaccelerator:Describe*", "globalaccelerator:List*", "glue:BatchGetDevEndpoints", "glue:BatchGetJobs", "glue:BatchGetPartition", "glue:BatchGetTriggers", "glue:BatchGetWorkflows", "glue:CheckSchemaVersionValidity", "glue:GetCatalogImportStatus", "glue:GetClassifier", "glue:GetClassifiers", "glue:GetCrawler", "glue:GetCrawlerMetrics", "glue:GetCrawlers", "glue:GetDatabase", "glue:GetDatabases", "glue:GetDataCatalogEncryptionSettings", "glue:GetDataflowGraph", "glue:GetDevEndpoint", "glue:GetDevEndpoints", "glue:GetJob", "glue:GetJobBookmark", "glue:GetJobRun", "glue:GetJobRuns", "glue:GetJobs", "glue:GetMapping", "glue:GetMLTaskRun", "glue:GetMLTaskRuns", "glue:GetMLTransform", "glue:GetMLTransforms", "glue:GetPartition", "glue:GetPartitions", "glue:GetPlan", "glue:GetRegistry", "glue:GetResourcePolicy", "glue:GetSchema", "glue:GetSchemaByDefinition", "glue:GetSchemaVersion", "glue:GetSchemaVersionsDiff", "glue:GetSecurityConfiguration", "glue:GetSecurityConfigurations", "glue:GetTable", "glue:GetTables", "glue:GetTableVersion", "glue:GetTableVersions", "glue:GetTags", "glue:GetTrigger", "glue:GetTriggers", "glue:GetUserDefinedFunction", "glue:GetUserDefinedFunctions", "glue:GetWorkflow", "glue:GetWorkflowRun", "glue:GetWorkflowRunProperties", "glue:GetWorkflowRuns", "glue:ListCrawlers", "glue:ListDevEndpoints", "glue:ListJobs", "glue:ListMLTransforms", "glue:ListRegistries", "glue:ListSchemas", "glue:ListSchemaVersions", "glue:ListTriggers", "glue:ListWorkflows", "glue:QuerySchemaVersionMetadata", "greengrass:DescribeComponent", "greengrass:Get*", "greengrass:List*", "groundstation:DescribeContact", "groundstation:GetConfig", "groundstation:GetDataflowEndpointGroup", "groundstation:GetMinuteUsage", "groundstation:GetMissionProfile", "groundstation:GetSatellite", "groundstation:ListConfigs", "groundstation:ListContacts", "groundstation:ListDataflowEndpointGroups", "groundstation:ListGroundStations", "groundstation:ListMissionProfiles", "groundstation:ListSatellites", "groundstation:ListTagsForResource", "guardduty:DescribeOrganizationConfiguration", "guardduty:DescribePublishingDestination", "guardduty:Get*", "guardduty:List*", "health:Describe*", "iam:Generate*", "iam:Get*", "iam:List*", "iam:Simulate*", "imagebuilder:Get*", "imagebuilder:List*", "importexport:Get*", "importexport:List*", "inspector:Describe*", "inspector:Get*", "inspector:List*", "inspector:Preview*", "iot:Describe*", "iot:Get*", "iot:List*", "iot1click:DescribeDevice", "iot1click:DescribePlacement", "iot1click:DescribeProject", "iot1click:GetDeviceMethods", "iot1click:GetDevicesInPlacement", "iot1click:ListDeviceEvents", "iot1click:ListDevices", "iot1click:ListPlacements", "iot1click:ListProjects", "iot1click:ListTagsForResource", "iotanalytics:Describe*", "iotanalytics:Get*", "iotanalytics:List*", "iotanalytics:SampleChannelData", "iotevents:DescribeAlarm", "iotevents:DescribeAlarmModel", "iotevents:DescribeDetector", "iotevents:DescribeDetectorModel", "iotevents:DescribeInput", "iotevents:DescribeLoggingOptions", "iotevents:ListAlarmModels", "iotevents:ListAlarmModelVersions", "iotevents:ListAlarms", "iotevents:ListDetectorModels", "iotevents:ListDetectorModelVersions", "iotevents:ListDetectors", "iotevents:ListInputs", "iotevents:ListTagsForResource", "iotfleethub:DescribeApplication", "iotfleethub:ListApplications", "iotsitewise:Describe*", "iotsitewise:Get*", "iotsitewise:List*", "iotwireless:GetDestination", "iotwireless:GetDeviceProfile", "iotwireless:GetPartnerAccount", "iotwireless:GetServiceEndpoint", "iotwireless:GetServiceProfile", "iotwireless:GetWirelessDevice", "iotwireless:GetWirelessDeviceStatistics", "iotwireless:GetWirelessGateway", "iotwireless:GetWirelessGatewayCertificate", "iotwireless:GetWirelessGatewayFirmwareInformation", "iotwireless:GetWirelessGatewayStatistics", "iotwireless:GetWirelessGatewayTask", "iotwireless:GetWirelessGatewayTaskDefinition", "iotwireless:ListDestinations", "iotwireless:ListDeviceProfiles", "iotwireless:ListPartnerAccounts", "iotwireless:ListServiceProfiles", "iotwireless:ListTagsForResource", "iotwireless:ListWirelessDevices", "iotwireless:ListWirelessGateways", "iotwireless:ListWirelessGatewayTaskDefinitions", "ivs:BatchGetChannel", "ivs:GetChannel", "ivs:GetPlaybackKeyPair", "ivs:GetRecordingConfiguration", "ivs:ListChannels", "ivs:ListPlaybackKeyPairs", "ivs:ListRecordingConfigurations", "ivs:ListStreams", "ivs:ListTagsForResource", "kafka:Describe*", "kafka:Get*", "kafka:List*", "kendra:DescribeDataSource", "kendra:DescribeFaq", "kendra:DescribeIndex", "kendra:DescribeQuerySuggestionsBlockList", "kendra:DescribeQuerySuggestionsConfig", "kendra:DescribeThesaurus", "kendra:GetQuerySuggestions", "kendra:ListDataSources", "kendra:ListDataSourceSyncJobs", "kendra:ListFaqs", "kendra:ListIndices", "kendra:ListQuerySuggestionsBlockLists", "kendra:ListTagsForResource", "kendra:ListThesauri", "kendra:Query", "kinesis:Describe*", "kinesis:Get*", "kinesis:List*", "kinesisanalytics:Describe*", "kinesisanalytics:Discover*", "kinesisanalytics:Get*", "kinesisanalytics:List*", "kinesisvideo:Describe*", "kinesisvideo:Get*", "kinesisvideo:List*", "kms:Describe*", "kms:Get*", "kms:List*", "lambda:Get*", "lambda:List*", "lex:DescribeBot", "lex:DescribeBotAlias", "lex:DescribeBotChannel", "lex:DescribeBotLocale", "lex:DescribeBotVersion", "lex:DescribeExport", "lex:DescribeImport", "lex:DescribeIntent", "lex:DescribeResourcePolicy", "lex:DescribeSlot", "lex:DescribeSlotType", "lex:Get*", "lex:ListBotAliases", "lex:ListBotChannels", "lex:ListBotLocales", "lex:ListBots", "lex:ListBotVersions", "lex:ListBuiltInIntents", "lex:ListBuiltInSlotTypes", "lex:ListExports", "lex:ListImports", "lex:ListIntents", "lex:ListSlots", "lex:ListSlotTypes", "lex:ListTagsForResource", "license-manager:Get*", "license-manager:List*", "lightsail:GetActiveNames", "lightsail:GetAlarms", "lightsail:GetAutoSnapshots", "lightsail:GetBlueprints", "lightsail:GetBucketAccessKeys", "lightsail:GetBucketBundles", "lightsail:GetBucketMetricData", "lightsail:GetBuckets", "lightsail:GetBundles", "lightsail:GetCertificates", "lightsail:GetCloudFormationStackRecords", "lightsail:GetContainerAPIMetadata", "lightsail:GetContainerImages", "lightsail:GetContainerServiceDeployments", "lightsail:GetContainerServiceMetricData", "lightsail:GetContainerServicePowers", "lightsail:GetContainerServices", "lightsail:GetDisk", "lightsail:GetDisks", "lightsail:GetDiskSnapshot", "lightsail:GetDiskSnapshots", "lightsail:GetDistributionBundles", "lightsail:GetDistributionLatestCacheReset", "lightsail:GetDistributionMetricData", "lightsail:GetDistributions", "lightsail:GetDomain", "lightsail:GetDomains", "lightsail:GetExportSnapshotRecords", "lightsail:GetInstance", "lightsail:GetInstanceMetricData", "lightsail:GetInstancePortStates", "lightsail:GetInstances", "lightsail:GetInstanceSnapshot", "lightsail:GetInstanceSnapshots", "lightsail:GetInstanceState", "lightsail:GetKeyPair", "lightsail:GetKeyPairs", "lightsail:GetLoadBalancer", "lightsail:GetLoadBalancerMetricData", "lightsail:GetLoadBalancers", "lightsail:GetLoadBalancerTlsCertificates", "lightsail:GetOperation", "lightsail:GetOperations", "lightsail:GetOperationsForResource", "lightsail:GetRegions", "lightsail:GetRelationalDatabase", "lightsail:GetRelationalDatabaseBlueprints", "lightsail:GetRelationalDatabaseBundles", "lightsail:GetRelationalDatabaseEvents", "lightsail:GetRelationalDatabaseLogEvents", "lightsail:GetRelationalDatabaseLogStreams", "lightsail:GetRelationalDatabaseMetricData", "lightsail:GetRelationalDatabaseParameters", "lightsail:GetRelationalDatabases", "lightsail:GetRelationalDatabaseSnapshot", "lightsail:GetRelationalDatabaseSnapshots", "lightsail:GetStaticIp", "lightsail:GetStaticIps", "lightsail:Is*", "logs:Describe*", "logs:FilterLogEvents", "logs:Get*", "logs:ListTagsLogGroup", "logs:StartQuery", "logs:StopQuery", "logs:TestMetricFilter", "lookoutvision:DescribeDataset", "lookoutvision:DescribeModel", "lookoutvision:DescribeProject", "lookoutvision:ListDatasetEntries", "lookoutvision:ListModels", "lookoutvision:ListProjects", "lookoutvision:ListTagsForResource", "machinelearning:Describe*", "machinelearning:Get*", "macie:ListMemberAccounts", "macie:ListS3Resources", "macie2:BatchGetCustomDataIdentifiers", "macie2:DescribeBuckets", "macie2:DescribeClassificationJob", "macie2:DescribeOrganizationConfiguration", "macie2:GetAdministratorAccount", "macie2:GetBucketStatistics", "macie2:GetClassificationExportConfiguration", "macie2:GetCustomDataIdentifier", "macie2:GetFindings", "macie2:GetFindingsFilter", "macie2:GetFindingsPublicationConfiguration", "macie2:GetFindingStatistics", "macie2:GetInvitationsCount", "macie2:GetMacieSession", "macie2:GetMember", "macie2:GetUsageStatistics", "macie2:GetUsageTotals", "macie2:ListClassificationJobs", "macie2:ListCustomDataIdentifiers", "macie2:ListFindings", "macie2:ListFindingsFilters", "macie2:ListInvitations", "macie2:ListMembers", "macie2:ListOrganizationAdminAccounts", "macie2:ListTagsForResource", "macie2:SearchResources", "managedblockchain:GetNetwork", "managedblockchain:GetProposal", "managedblockchain:GetMember", "managedblockchain:GetNode", "managedblockchain:ListNetworks", "managedblockchain:ListProposals", "managedblockchain:ListProposalVotes", "managedblockchain:ListInvitations", "managedblockchain:ListMembers", "managedblockchain:ListNodes", "managedblockchain:ListTagsForResource", "mediaconnect:DescribeFlow", "mediaconnect:DescribeOffering", "mediaconnect:DescribeReservation", "mediaconnect:ListFlows", "mediaconvert:DescribeEndpoints", "mediaconvert:Get*", "mediaconvert:List*", "mediapackage:Describe*", "mediapackage:List*", "mediastore:DescribeContainer", "mediastore:DescribeObject", "mediastore:GetContainerPolicy", "mediastore:GetCorsPolicy", "mediastore:GetLifecyclePolicy", "mediastore:GetMetricPolicy", "mediastore:GetObject", "mediastore:ListContainers", "mediastore:ListItems", "mediastore:ListTagsForResource", "mgh:Describe*", "mgh:GetHomeRegion", "mgh:List*", "mgn:DescribeJobLogItems", "mgn:DescribeJobs", "mgn:DescribeReplicationConfigurationTemplates", "mgn:DescribeSourceServers", "mgn:GetLaunchConfiguration", "mgn:GetReplicationConfiguration", "mobileanalytics:Get*", "mobilehub:Describe*", "mobilehub:Export*", "mobilehub:Generate*", "mobilehub:Get*", "mobilehub:List*", "mobilehub:Validate*", "mobilehub:Verify*", "mobiletargeting:Get*", "mobiletargeting:List*", "monitron:GetProject", "monitron:GetProjectAdminUser", "monitron:ListProjects", "monitron:ListTagsForResource", "mq:Describe*", "mq:List*", "network-firewall:DescribeFirewall", "network-firewall:DescribeFirewallPolicy", "network-firewall:DescribeLoggingConfiguration", "network-firewall:DescribeResourcePolicy", "network-firewall:DescribeRuleGroup", "network-firewall:ListFirewallPolicies", "network-firewall:ListFirewalls", "network-firewall:ListRuleGroups", "network-firewall:ListTagsForResource", "networkmanager:DescribeGlobalNetworks", "networkmanager:GetConnections", "networkmanager:GetCustomerGatewayAssociations", "networkmanager:GetDevices", "networkmanager:GetLinkAssociations", "networkmanager:GetLinks", "networkmanager:GetSites", "networkmanager:GetTransitGatewayConnectPeerassociations", "networkmanager:GetTransitGatewayRegistrations", "opsworks-cm:Describe*", "opsworks-cm:List*", "opsworks:Describe*", "opsworks:Get*", "organizations:Describe*", "organizations:List*", "outposts:Get*", "outposts:List*", "personalize:Describe*", "personalize:Get*", "personalize:List*", "pi:DescribeDimensionKeys", "pi:GetDimensionKeyDetails", "pi:GetResourceMetrics", "polly:Describe*", "polly:Get*", "polly:List*", "polly:SynthesizeSpeech", "proton:GetEnvironment", "proton:GetEnvironmentTemplate", "proton:GetEnvironmentTemplateVersion", "proton:GetService", "proton:GetServiceInstance", "proton:GetServiceTemplate", "proton:GetServiceTemplateVersion", "proton:ListEnvironmentAccountConnections", "proton:ListEnvironments", "proton:ListEnvironmentTemplates", "proton:ListServiceInstances", "proton:ListServices", "proton:ListServiceTemplates", "proton:ListTagsForResource", "qldb:DescribeJournalS3Export", "qldb:DescribeLedger", "qldb:GetBlock", "qldb:GetDigest", "qldb:GetRevision", "qldb:ListJournalS3Exports", "qldb:ListJournalS3ExportsForLedger", "qldb:ListLedgers", "qldb:ListTagsForResource", "ram:Get*", "ram:List*", "rds:Describe*", "rds:Download*", "rds:List*", "redshift:Describe*", "redshift:GetReservedNodeExchangeOfferings", "redshift:View*", "rekognition:CompareFaces", "rekognition:Detect*", "rekognition:List*", "rekognition:Search*", "resource-groups:Get*", "resource-groups:List*", "resource-groups:Search*", "robomaker:BatchDescribe*", "robomaker:Describe*", "robomaker:Get*", "robomaker:List*", "route53-recovery-cluster:Get*", "route53-recovery-control-config:Describe*", "route53-recovery-control-config:List*", "route53-recovery-readiness:Get*", "route53-recovery-readiness:List*", "route53:Get*", "route53:List*", "route53:Test*", "route53domains:Check*", "route53domains:Get*", "route53domains:List*", "route53domains:View*", "route53resolver:Get*", "route53resolver:List*", "s3-object-lambda:GetObject", "s3-object-lambda:GetObjectAcl", "s3-object-lambda:GetObjectLegalHold", "s3-object-lambda:GetObjectRetention", "s3-object-lambda:GetObjectTagging", "s3-object-lambda:GetObjectVersion", "s3-object-lambda:GetObjectVersionAcl", "s3-object-lambda:GetObjectVersionTagging", "s3-object-lambda:ListBucket", "s3-object-lambda:ListBucketMultipartUploads", "s3-object-lambda:ListBucketVersions", "s3-object-lambda:ListMultipartUploadParts", "s3:DescribeJob", "s3:Get*", "s3:List*", "sagemaker:Describe*", "sagemaker:GetSearchSuggestions", "sagemaker:List*", "sagemaker:Search", "savingsplans:DescribeSavingsPlanRates", "savingsplans:DescribeSavingsPlans", "savingsplans:DescribeSavingsPlansOfferingRates", "savingsplans:DescribeSavingsPlansOfferings", "savingsplans:ListTagsForResource", "schemas:Describe*", "schemas:Get*", "schemas:List*", "schemas:Search*", "sdb:Get*", "sdb:List*", "sdb:Select*", "secretsmanager:Describe*", "secretsmanager:GetResourcePolicy", "secretsmanager:List*", "securityhub:Describe*", "securityhub:Get*", "securityhub:List*", "serverlessrepo:Get*", "serverlessrepo:List*", "serverlessrepo:SearchApplications", "servicecatalog:Describe*", "servicecatalog:GetApplication", "servicecatalog:GetAttributeGroup", "servicecatalog:List*", "servicecatalog:Scan*", "servicecatalog:Search*", "servicediscovery:Get*", "servicediscovery:List*", "servicequotas:GetAssociationForServiceQuotaTemplate", "servicequotas:GetAWSDefaultServiceQuota", "servicequotas:GetRequestedServiceQuotaChange", "servicequotas:GetServiceQuota", "servicequotas:GetServiceQuotaIncreaseRequestFromTemplate", "servicequotas:ListAWSDefaultServiceQuotas", "servicequotas:ListRequestedServiceQuotaChangeHistory", "servicequotas:ListRequestedServiceQuotaChangeHistoryByQuota", "servicequotas:ListServiceQuotaIncreaseRequestsInTemplate", "servicequotas:ListServiceQuotas", "servicequotas:ListServices", "ses:Describe*", "ses:Get*", "ses:List*", "shield:Describe*", "shield:Get*", "shield:List*", "signer:DescribeSigningJob", "signer:GetSigningPlatform", "signer:GetSigningProfile", "signer:ListProfilePermissions", "signer:ListSigningJobs", "signer:ListSigningPlatforms", "signer:ListSigningProfiles", "signer:ListTagsForResource", "snowball:Describe*", "snowball:Get*", "snowball:List*", "sns:Check*", "sns:Get*", "sns:List*", "sqs:Get*", "sqs:List*", "sqs:Receive*", "ssm-contacts:DescribeEngagement", "ssm-contacts:DescribePage", "ssm-contacts:GetContact", "ssm-contacts:GetContactChannel", "ssm-contacts:ListContactChannels", "ssm-contacts:ListContacts", "ssm-contacts:ListEngagements", "ssm-contacts:ListPageReceipts", "ssm-contacts:ListPagesByContact", "ssm-contacts:ListPagesByEngagement", "ssm-incidents:GetIncidentRecord", "ssm-incidents:GetReplicationSet", "ssm-incidents:GetResourcePolicies", "ssm-incidents:GetResponsePlan", "ssm-incidents:GetTimelineEvent", "ssm-incidents:ListIncidentRecords", "ssm-incidents:ListRelatedItems", "ssm-incidents:ListReplicationSets", "ssm-incidents:ListResponsePlans", "ssm-incidents:ListTagsForResource", "ssm-incidents:ListTimelineEvents", "ssm:Describe*", "ssm:Get*", "ssm:List*", "sso-directory:Describe*", "sso-directory:List*", "sso-directory:Search*", "sso:Describe*", "sso:Get*", "sso:List*", "sso:Search*", "states:Describe*", "states:GetExecutionHistory", "states:List*", "storagegateway:Describe*", "storagegateway:List*", "sts:GetAccessKeyInfo", "sts:GetCallerIdentity", "sts:GetSessionToken", "support:DescribeCases", "swf:Count*", "swf:Describe*", "swf:Get*", "swf:List*", "synthetics:Describe*", "synthetics:Get*", "synthetics:List*", "tag:Get*", "timestream:DescribeDatabase", "timestream:DescribeEndpoints", "timestream:DescribeTable", "timestream:ListDatabases", "timestream:ListMeasures", "timestream:ListTables", "timestream:ListTagsForResource", "transcribe:Get*", "transcribe:List*", "transfer:Describe*", "transfer:List*", "transfer:TestIdentityProvider", "trustedadvisor:Describe*", "waf-regional:Get*", "waf-regional:List*", "waf:Get*", "waf:List*", "wafv2:CheckCapacity", "wafv2:Describe*", "wafv2:Get*", "wafv2:List*", "workdocs:CheckAlias", "workdocs:Describe*", "workdocs:Get*", "worklink:Describe*", "worklink:List*", "workmail:Describe*", "workmail:Get*", "workmail:List*", "workmail:Search*", "workspaces:Describe*", "xray:BatchGet*", "xray:Get*" ], "Resource": "*" } ] }

역할 신뢰 관계

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "config.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

AWS Control Tower 타워가 관리되지 않는 OU 및 계정에서 AWS Config 규칙을 집계하는 방법

AWS Control Tower 관리 계정은 외부 AWS Config 규칙을 감지하는 데 도움이 되는 조직 수준의 애그리게이터를 생성하므로 AWS Control Tower 가 관리되지 않는 계정에 액세스할 필요가 없습니다. AWS Control Tower 콘솔은 지정된 계정에 대해 외부에서 생성된 AWS Config 규칙의 수를 보여 주며, AWS Config 콘솔에 대한 링크를 통해 이러한 외부 규칙에 대한 세부 정보를 볼 수 있습니다.

어그리게이터를 생성하기 위해 AWS Control Tower Tower는 조직을 설명하고 그 아래에 계정을 나열하는 데 필요한 권한을 가진 역할을 추가합니다. 이AWSControlTowerConfigAggregatorRoleForOrganizations역할에는AWSConfigRoleForOrganizations와의 신뢰 관계 및 관리형 정책config.amazonaws.com.

다음은 역할에 연결된 IAM 정책 (JSON 아티팩트) 입니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "organizations:ListAccounts", "organizations:DescribeOrganization", "organizations:ListAWSServiceAccessForOrganization" ], "Resource": "*" } ] }

다음은 입니다.AWSControlTowerConfigAggregatorRoleForOrganizations신뢰 관계:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "config.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } }

관리 계정에 이 기능을 배포하려면 관리형 정책에 다음 권한이 추가됩니다.AWSControlTowerServiceRolePolicy에 의해 사용되는AWSControlTowerAdminAWS Config 애그리게이터를 생성할 때의 역할은 다음과 같습니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "config:PutConfigurationAggregator", "config:DeleteConfigurationAggregator", "iam:PassRole" ], "Resource": [ "arn:aws:iam:::role/service-role/AWSControlTowerConfigAggregatorRoleForOrganizations", "arn:aws:config:::config-aggregator/" ] }, { "Effect": "Allow", "Action": "organizations:EnableAWSServiceAccess", "Resource": "*" } ] }

새 리소스 생성:AWSControlTowerConfigAggregatorRoleForOrganizationsaws-controltower-ConfigAggregatorForOrganizations

준비가 되면 계정을 개별적으로 등록하거나 OU를 등록하여 그룹으로 등록할 수 있습니다. 계정을 등록한 경우 AWS Config에서 규칙을 생성하면 AWS Control Tower 에서 새 규칙을 감지합니다. 애그리게이터는 외부 규칙의 수를 보여 주며 AWS Config 콘솔에 대한 링크를 제공합니다. 이 콘솔에서는 계정에 대한 각 외부 규칙의 세부 정보를 볼 수 있습니다. AWS Config 콘솔과 AWS Control Tower 콘솔의 정보를 사용하여 계정에 적절한 가드레일이 활성화되어 있는지 확인합니다.

참고

AWS Control Tower 콘솔에서 집계된 AWS Config 규칙 목록으로 직접 연결하려면 관리 계정의 홈 리전에 있는 Config 레코더 및 전송 채널을 사용하여 AWS Config 콘솔을 구성합니다.

AWS Control Tower 감사 계정에 대한 프로그래밍 역할 및 신뢰 관계

감사 계정에 로그인하고 다른 계정을 프로그래밍 방식으로 검토하는 역할을 맡을 수 있습니다. 감사 계정을 이용해 다른 계정에 수동으로 로그인할 수 없습니다.

감사 계정은 AWS Lambda 함수에만 부여된 일부 역할을 통해 프로그래밍 방식으로 액세스하여 다른 계정에 액세스할 수 있습니다. 보안을 위해 이러한 역할은 다음과 같습니다.신뢰 관계다른 역할과 함께, 이는 역할을 활용할 수 있는 조건이 엄격하게 정의됨을 의미합니다.

AWS Control Tower 스택 세트StackSet-AWSControlTowerBP-BASELINE-ROLES감사 계정에 다음과 같은 프로그래밍 전용 교차 계정 역할을 만듭니다.

  • AWS Control Tower 관리자소개역할

  • AWS Control Tower - 감사관리자역할

  • AWS Control Tower - 읽기 전용실행역할

  • AWS Control Tower - 감사 전용역할

ReadOnlyExecutionRole:이 역할을 사용하면 감사 계정이 전체 조직에서 S3 버킷의 객체를 읽을 수 있습니다 (SecurityAudit정책 - 메타데이터 액세스만 허용함)

AWS Control Tower 관리자확장역할:

  • 관리자 권한이 있음

  • 콘솔에서 가정할 수 없음

  • 감사 계정의 역할에 의해서만 가정할 수 있습니다.aws-controltower-AuditAdministratorRole

다음 아티팩트는 에 대한 신뢰 관계를 보여 줍니다.aws-controltower-AdministratorExecutionRole. 자리표시자 번호012345678901로 대체됩니다.Audit_acct_ID감사 계정의 번호입니다.

{   "Version": "2012-10-17",   "Statement": [     {       "Effect": "Allow",       "Principal": {         "AWS": "arn:aws:iam::012345678901:role/aws-controltower-AuditAdministratorRole"       },       "Action": "sts:AssumeRole"     }   ] }

AWS Control Tower - 감사관리자역할:

  • AWS Lambda 서비스에서만 수임될 수 있습니다.

  • 이름이 문자열로 시작하는 Amazon S3 객체에 대해 읽기 (Get) 및 쓰기 (넣기) 작업을 수행할 수 있는 권한이 있습니다.로그

연결된 정책:

1. AWSLambdaExecute— AWS 관리형 정책

2. 가정-AWS Control Tower - 감사관리자역할— 인라인 정책 — AWS Control Tower 타워에서 만든 아티팩트는 다음과 같습니다.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "sts:AssumeRole" ], "Resource": [ "arn:aws:iam::*:role/aws-controltower-AdministratorExecutionRole" ], "Effect": "Allow" } ] }

다음 아티팩트는 에 대한 신뢰 관계를 보여 줍니다.aws-controltower-AuditAdministratorRole:

{   "Version": "2012-10-17",   "Statement": [     {       "Effect": "Allow",       "Principal": {         "Service": "lambda.amazonaws.com"       },       "Action": "sts:AssumeRole"     }   ] }

AWS Control Tower - 읽기 전용실행역할:

  • 콘솔에서 가정할 수 없음

  • 감사 계정의 다른 역할만 맡을 수 있습니다.AuditReadOnlyRole

다음 아티팩트는 에 대한 신뢰 관계를 보여 줍니다.aws-controltower-ReadOnlyExecutionRole. 자리표시자 번호012345678901로 대체됩니다.Audit_acct_ID감사 계정의 번호입니다.

{   "Version": "2012-10-17",   "Statement": [     {       "Effect": "Allow",       "Principal": {         "AWS": "arn:aws:iam::012345678901:role/aws-controltower-AuditReadOnlyRole "       },       "Action": "sts:AssumeRole"     }   ] }

AWS Control Tower - 감사 전용역할:

  • AWS Lambda 서비스에서만 수임될 수 있습니다.

  • 이름이 문자열로 시작하는 Amazon S3 객체에 대해 읽기 (Get) 및 쓰기 (넣기) 작업을 수행할 수 있는 권한이 있습니다.로그

연결된 정책:

1. AWSLambdaExecute— AWS 관리형 정책

2. 가정-AWS Control Tower - 감사 전용역할— 인라인 정책 — AWS Control Tower 타워에서 만든 아티팩트는 다음과 같습니다.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "sts:AssumeRole" ], "Resource": [ "arn:aws:iam::*:role/aws-controltower-ReadOnlyExecutionRole" ], "Effect": "Allow" } ] }

다음 아티팩트는 에 대한 신뢰 관계를 보여 줍니다.aws-controltower-AuditAdministratorRole:

{   "Version": "2012-10-17",   "Statement": [     {       "Effect": "Allow",       "Principal": {         "Service": "lambda.amazonaws.com"       },       "Action": "sts:AssumeRole"     }   ] }

IAM 역할을 사용한 자동화된 계정 프로비저닝

보다 자동화된 방식으로 Account Factory 계정을 구성하려면 AWS Control Tower 관리 계정에서 Lambda 함수를 생성하면 됩니다.를 로 가정합니다.AWS제어기확장역할멤버 계정에 있습니다. 그런 다음 관리 계정이 역할을 사용하여 각 구성원 계정에서 원하는 구성 단계를 수행합니다.

Lambda 함수를 사용하여 계정을 프로비저닝하는 경우 이 작업을 수행할 자격 증명에는 외에도 다음 IAM 권한 정책이 있어야 합니다.AWSServiceCatalogEndUserFullAccess.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AWSControlTowerAccountFactoryAccess", "Effect": "Allow", "Action": [ "sso:GetProfile", "sso:CreateProfile", "sso:UpdateProfile", "sso:AssociateProfile", "sso:CreateApplicationInstance", "sso:GetSSOStatus", "sso:GetTrust", "sso:CreateTrust", "sso:UpdateTrust", "sso:GetPeregrineStatus", "sso:GetApplicationInstance", "sso:ListDirectoryAssociations", "sso:ListPermissionSets", "sso:GetPermissionSet", "sso:ProvisionApplicationInstanceForAWSAccount", "sso:ProvisionApplicationProfileForAWSAccountInstance", "sso:ProvisionSAMLProvider", "sso:ListProfileAssociations", "sso-directory:ListMembersInGroup", "sso-directory:AddMemberToGroup", "sso-directory:SearchGroups", "sso-directory:SearchGroupsWithGroupName", "sso-directory:SearchUsers", "sso-directory:CreateUser", "sso-directory:DescribeGroups", "sso-directory:DescribeDirectory", "sso-directory:GetUserPoolInfo", "controltower:CreateManagedAccount", "controltower:DescribeManagedAccount", "controltower:DeregisterManagedAccount", "s3:GetObject", "organizations:describeOrganization", "sso:DescribeRegisteredRegions" ], "Resource": "*" } ] }