AWS Control Tower 타워가 역할을 사용하여 계정을 생성하고 관리하는 방법 - AWS Control Tower

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

AWS Control Tower 타워가 역할을 사용하여 계정을 생성하고 관리하는 방법

일반적으로 역할은 Identity and Access Management (IAM) 에 포함되어 있습니다.AWS. 의 IAM 및 역할에 대한 일반적인 내용은AWS, 참조:의 IAM 역할 주제AWSIAM 사용 설명서.

AWS Control Tower 콘솔을 사용하는 데 필요한 역할에 대한 자세한 내용은 을 참조하십시오.AWS Control Tower.

역할 및 계정 생성

AWS Control Tower 타워는 다음 주소로 전화하여 고객의 계정을 생성합니다.CreateAccount의 APIAWS Organizations. 일시AWS Organizations이 계정을 만들면 해당 계정 내에 역할이 생성됩니다. AWS Control Tower Tower는 파라미터를 API에 전달하여 이름을 지정합니다. 역할의 이름은 AWSControlTowerExecution입니다.

AWS Control Tower Tower에서 인계받은AWSControlTowerExecution어카운트 팩토리에서 생성한 모든 계정의 역할 이 역할을 사용하여, AWS Control Tower기준선계정을 만들고 필수 (및 기타 활성화된) 가드레일을 적용하면 다른 역할이 생성됩니다. 이러한 역할은 다음과 같은 다른 서비스에서 차례로 사용됩니다.AWS Config.

참고

To기준선계정은 다음과 같은 리소스를 설정하는 것입니다.Account Factory 템플릿, 때로는청사진및 가드레일. 또한 베이스라인 지정 프로세스는 템플릿 배포의 일부로 계정에 중앙 집중식 로깅 및 보안 감사 역할을 설정합니다. AWS Control Tower 기준선은 등록된 모든 계정에 적용하는 역할에 포함되어 있습니다.

계정 및 리소스에 대한 자세한 내용은 단원을 참조하십시오.About AWSAWS Control Tower의.

이 AWSControlTowerExecution 역할, 설명

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

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

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

  • AWS Control Tower 콘솔을 통해 생성한 어카운트 Account Factory 경우, AWS Control Tower 타워는 계정 생성 시 이 역할을 생성합니다.

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

  • 거버넌스를 OU로 확장할 때 AWS Control Tower 타워는StackSet-AWSControlTowerExecutionRole해당 OU의 모든 계정에서 역할을 생성할 수 있습니다.

의 목적AWSControlTowerExecution역할:

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

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

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

어떻게AWSControlTowerExecution역할은 OU와 함께 작동합니다.

AWSControlTowerExecution역할은 선택한 AWS Control Tower 가드레일이 조직의 모든 개별 계정뿐만 아니라 AWS Control Tower Tower에서 생성한 모든 새 계정에 자동으로 적용되도록 합니다. 결과:

  • 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:AssumeRole작업. 즉, 계정 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 타워의 권한 정책에 대한 일반 정보는 을 참조하십시오.리소스에 대한 액세스 관리.

권장 사항:

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

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

참고

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

AWS Control Tower ConfigRecorderRole

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

참고

이 IAM 역할을 생성하면 AWS Control Tower에AWS Config이 역할에 대한 권한 정책에 정의된 리소스 AWS Control Tower 타워가 처음으로 이 역할을 사용했을 때AWS Config새로운 를 생성할 수 있습니다.서비스 연결 역할계정에서. 해당 역할이 부여합니다.AWS Config다른 사용자에 대한 액세스AWS원래의 AWS Control Tower 요청을 완료하는 데 필요한 리소스.

방법에 대해 자세히 알아보려면AWS Config또는 다른 서비스가 서비스 연결 역할을 생성 및 사용합니다. 단원을 참조하십시오.AWSIAM에서 사용하는 서비스. 다음과 같은 서비스를 찾아보십시오.에서서비스 연결 역할이 열은 서비스 연결 역할 사용을 지원함을 나타냅니다. 해당 서비스에 대한 서비스 연결 역할 설명서를 보려면 예(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 Tower의 의 통합 방법AWS Config비관리형 OU 및 계정의 규칙

AWS Control Tower 관리 계정은 조직 수준의 애그리게이터를 생성하여 외부 데이터를 탐지하는 데 도움을 줍니다.AWS Config규칙을 AWS Control Tower Tower에서 관리되지 않는 계정에 대한 액세스 권한을 얻을 필요가 없습니다. AWS Control Tower 콘솔에서는 외부에서 생성된 개수가 몇 개나 표시됩니다.AWS Config특정 계정에 대한 규칙 및AWS Config콘솔에서 이러한 외부 규칙에 대한 세부 정보를 볼 수 있습니다.

애그리게이터를 생성하기 위해 AWS Control 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에서 사용하는AWSControlTowerAdmin역할을 만들 때의 역할AWS 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규칙, 구성AWS Config관리 계정의 홈 지역에 Config 레코더 및 전송 채널이 있는 콘솔

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

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

감사 계정에서는 다음에 부여된 일부 역할을 통해 다른 계정에 프로그래밍 방식으로 액세스할 수 있습니다.AWSLambda 함수 전용입니다. 보안상의 이유로 이러한 역할은신뢰 관계다른 역할과 함께 사용하면 역할을 활용할 수 있는 조건이 엄격하게 정의됩니다.

AWS Control ToowerTo의 스택 세트StackSet-AWSControlTowerBP-BASELINE-ROLES감사 계정에 다음과 같은 프로그래밍 전용 계정 간 역할을 생성합니다.

  • AWS 컨트롤 타워-AdministratorExecutionRole

  • AWS 컨트롤 타워-AuditAdministratorRole

  • AWS 컨트롤 타워-ReadOnlyExecutionRole

  • AWS 컨트롤 타워-AuditReadOnlyRole

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

AWS 컨트롤 타워-AdministratorExecutionRole:

  • 관리자 권한 보유

  • 콘솔에서 추측할 수 없음

  • 감사 계정의 역할을 통해서만 맡을 수 있습니다.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 컨트롤 타워-AuditAdministratorRole:

  • 에 의해 가정될 수 있습니다AWSLambda 서비스 전용

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

연결된 정책:

1. AWSLambdaExecute–AWS관리형 정책

2. AssumeRole-AWS 컨트롤 타워-AuditAdministratorRole— 인라인 정책 — 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 컨트롤 타워-ReadOnlyExecutionRole:

  • 콘솔에서 추측할 수 없음

  • 감사 계정의 다른 역할에 의해서만 위임될 수 있습니다.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 컨트롤 타워-AuditReadOnlyRole:

  • 에 의해 가정될 수 있습니다AWSLambda 서비스 전용

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

연결된 정책:

1. AWSLambdaExecute–AWS관리형 정책

2. AssumeRole-AWS 컨트롤 타워-AuditReadOnlyRole— 인라인 정책 — 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 함수를 생성할 수 있습니다.assumes the AWSControlTowerExecution역할회원 계정에서 그런 다음 관리 계정은 역할을 사용하여 각 구성원 계정에서 원하는 구성 단계를 수행합니다.

Lambda 함수를 사용하여 계정을 프로비저닝하는 경우, 이 작업을 수행할 자격 증명에는 다음 IAM 권한 정책과 함께 다음 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": "*" } ] }