AWS CodePipeline 및 Amazon Bedrock을 사용하여 AWS Organizations 정책을 코드로 관리 - 권장 가이드

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

AWS CodePipeline 및 Amazon Bedrock을 사용하여 AWS Organizations 정책을 코드로 관리

작성자: Andre Cavalcante(AWS) 및 Mariana Pessoa de Queiroz(AWS)

요약

에서 권한 부여 정책을 사용하여 멤버 계정의 보안 주체 및 리소스에 대한 액세스를 AWS Organizations 중앙에서 구성하고 관리할 수 있습니다. 서비스 제어 정책(SCPs 조직의 AWS Identity and Access Management (IAM) 역할 및 사용자에 대해 사용 가능한 최대 권한을 정의합니다. 리소스 제어 정책(RCPs 조직의 리소스에 사용할 수 있는 최대 권한을 정의합니다.

이 패턴은 SCPs 및 RCPs를 지속적 통합 및 지속적 배포(CI/CD) 파이프라인을 통해 배포하는 코드형 인프라(IaC)로 관리하는 데 도움이 됩니다. AWS CloudFormation 또는 Hashicorp Terraform을 사용하여 이러한 정책을 관리하면 여러 권한 부여 정책 구축 및 유지 관리와 관련된 부담을 줄일 수 있습니다.

이 패턴에는 다음 기능이 포함됩니다.

  • 매니페스트 파일(scp-management.json 및 )을 사용하여 권한 부여 정책을 생성, 삭제 및 업데이트합니다rcp-management.json.

  • 정책 대신 가드레일을 사용합니다. 매니페스트 파일에서 가드레일과 해당 대상을 정의합니다.

  • AWS CodeBuild 및를 사용하는 파이프라인은 매니페스트 파일의 가드레일을 AWS CodePipeline병합하고 최적화합니다. 매니페스트 파일의 각 문에 대해 파이프라인은 가드레일을 단일 SCP 또는 RCP로 결합한 다음 정의된 대상에 적용합니다.

  • AWS Organizations 는 정책을 대상에 적용합니다. 대상은 AWS 계정, 조직 단위(OU), 환경(environments.json파일에서 정의한 계정 또는 OUs 그룹) 또는 AWS 태그를 공유하는 계정 그룹일 수 있습니다.

  • Amazon Bedrock은 파이프라인 로그를 읽고 모든 정책 변경 사항을 요약합니다.

  • 파이프라인에는 수동 승인이 필요합니다. 승인자는 Amazon Bedrock이 준비한 실행 요약을 검토할 수 있으므로 변경 사항을 이해하는 데 도움이 됩니다.

사전 조건 및 제한 사항

사전 조건 

  • 에서 조직으로 관리 AWS 계정 되는 여러 AWS Organizations. 자세한 내용은 조직 생성을 참조하세요.

  • SCP 및 RCP 기능은에서 활성화됩니다 AWS Organizations. 자세한 내용은 정책 유형 활성화를 참조하세요.

  • Terraform 버전 1.9.8 이상이 설치되어 있습니다.

  • Terraform 파이프라인을 통해이 솔루션을 배포하지 않는 경우 정책 관리 파이프라인을 배포 AWS 계정 하는의 Amazon Simple Storage Service(Amazon S3) 버킷에 Terraform 상태 파일을 저장해야 합니다.

  • Python 버전 3.13.3 이상이 설치되어 있습니다.

제한 사항

아키텍처

다음 다이어그램은 정책 관리 파이프라인의 워크플로와 관련 리소스를 보여줍니다.

정책 관리 파이프라인SCPs 및 RCPs 릴리스.

이 다이어그램은 다음 워크플로를 보여줍니다.

  1. 사용자는 원격 리포지토리의 기본 브랜치에 있는 scp-management.json 또는 rcp-management.json 매니페스트 파일에 변경 사항을 커밋합니다.

  2. main 브랜치를 변경하면에서 파이프라인이 시작됩니다 AWS CodePipeline.

  3. CodePipeline은 Validate-Plan CodeBuild 프로젝트를 시작합니다. 이 프로젝트는 원격 리포지토리의 Python 스크립트를 사용하여 정책 및 정책 매니페스트 파일을 검증합니다. 이 CodeBuild 프로젝트는 다음을 수행합니다.

    1. SCP 및 RCP 매니페스트 파일에 고유한 문 IDs(Sid)가 포함되어 있는지 확인합니다.

    2. scp-policy-processor/main.pyrcp-policy-processor/main.py Python 스크립트를 사용하여 가드레일 폴더의 가드레일을 단일 RCP 또는 SCP 정책으로 연결합니다. Resource, Action및가 동일한 가드레일을 결합합니다Condition.

    3. AWS Identity and Access Management Access Analyzer 를 사용하여 최적화된 최종 정책을 검증합니다. 조사 결과가 있으면 파이프라인이 중지됩니다.

    4. Terraform이 리소스를 생성하는 데 사용하는 scps.jsonrcps.json 파일을 생성합니다.

    5. terraform plan 명령을 실행하여 Terraform 실행 계획을 생성합니다.

  4. (선택 사항) Validate-Plan CodeBuild 프로젝트는 bedrock-prompt/prompt.py 스크립트를 사용하여 Amazon Bedrock에 프롬프트를 보냅니다. bedrock-prompt/prompt.txt 파일에서 프롬프트를 정의합니다. Amazon Bedrock은 Anthropic Claude Sonnet 3.5를 사용하여 Terraform 및 Python 로그를 분석하여 제안된 변경 사항의 요약을 생성합니다.

  5. CodePipeline은 Amazon Simple Notification Service(Amazon SNS) 주제를 사용하여 승인자에게 변경 사항을 검토해야 함을 알립니다. Amazon Bedrock이 변경 요약을 생성한 경우 알림에이 요약이 포함됩니다.

  6. 정책 승인자는 CodePipeline에서 작업을 승인합니다. Amazon Bedrock이 변경 요약을 생성한 경우 승인자는 승인 전에 CodePipeline의 요약을 검토할 수 있습니다.

  7. CodePipeline은 Apply CodeBuild 프로젝트를 시작합니다. 이 프로젝트는 Terraform을 사용하여 RCP 및 SCP 변경 사항을 적용합니다 AWS Organizations.

이 아키텍처와 연결된 IaC 템플릿은 정책 관리 파이프라인을 지원하는 다음 리소스도 배포합니다.

  • scp-policy-processor/main.py 및와 같은 CodePipeline 아티팩트 및 스크립트를 저장하기 위한 Amazon S3 버킷 bedrock-prompt/prompt.py

  • 이 솔루션에서 생성한 리소스를 암호화하는 AWS Key Management Service (AWS KMS) 키

도구

AWS 서비스

  • Amazon Bedrock은 통합 API를 통해 많은 고성능 파운데이션 모델을 사용할 수 있도록 하는 완전관리형 AI 서비스입니다.

  • AWS CodeBuild는 소스 코드를 컴파일하고, 단위 테스트를 실행하고, 배포할 준비가 된 아티팩트를 생성하는 데 도움이 되는 완전 관리형 빌드 서비스입니다. 

  • AWS CodePipeline를 사용하면 소프트웨어 릴리스의 다양한 단계를 신속하게 모델링 및 구성하고 소프트웨어 변경 사항을 지속적으로 릴리스하는 데 필요한 단계를 자동화할 수 있습니다.

  • AWS Organizations는 여러을 생성하여 중앙에서 관리하는 조직 AWS 계정 으로 통합하는 데 도움이 되는 계정 관리 서비스입니다.

  • AWS SDK for Python (Boto3)는 Python 애플리케이션, 라이브러리 또는 스크립트를와 통합하는 데 도움이 되는 소프트웨어 개발 키트입니다 AWS 서비스.

  • Amazon Simple Storage Service(S3)는 원하는 양의 데이터를 저장, 보호 및 검색하는 데 도움이 되는 클라우드 기반 객체 스토리지 서비스입니다.

기타 도구

  • HashiCorp Terraform은 코드를 사용하여 클라우드 인프라 및 리소스를 프로비저닝하고 관리하는 데 도움이 되는 IaC 도구입니다.

코드 리포지토리

이 패턴의 코드는 organizations-policy-pipeline GitHub 리포지토리에서 사용할 수 있습니다. 다음은 sample-repository 폴더에 포함된 키 파일입니다.

  • environments 폴더에는 환경 목록이 environments.json 포함되어 있습니다. 환경은 대상 그룹이며 AWS 계정 IDs 또는 조직 단위(OUs.

  • rcp-management 폴더에서:

    • guardrails 폴더에는 RCPs

    • policies 폴더에는 개별 RCPs.

    • rcp-management.json 매니페스트 파일은 RCP 가드레일, 전체 RCPs 및 관련 대상을 관리하는 데 도움이 됩니다.

  • scp-management 폴더에서:

    • guardrails 폴더에는 SCPs

    • policies 폴더에는 개별 SCPs.

    • scp-management.json 매니페스트 파일은 SCP 가드레일, 전체 SCPs 및 관련 대상을 관리하는 데 도움이 됩니다.

  • utils 폴더에는 파이프라인을 통해 관리할 수 있도록 현재 SCPs 및 RCPs를 마이그레이션하는 데 도움이 되는 스크립트가 포함되어 있습니다. 자세한 내용은 이 패턴의 추가 정보 섹션을 참조하세요.

모범 사례

  • 파이프라인을 설정하기 전에 AWS Organizations 할당량 한도에 도달하지 않았는지 확인하는 것이 좋습니다.

  • AWS Organizations 관리 계정은 해당 계정에서 수행해야 하는 작업에만 사용하는 것이 좋습니다. 자세한 내용은 관리 계정 모범 사례를 참조하세요.

에픽

작업설명필요한 기술

리포지토리를 생성합니다.

보안 운영 팀이 정책을 관리할 리포지토리를 생성합니다. 가 AWS CodeConnections 지원하는 타사 리포지토리 공급자 중 하나를 사용합니다.

DevOps 엔지니어

정책 관리를 위임합니다.

파이프라인을 배포하는 멤버 계정에 AWS Organizations 정책 관리를 위임합니다. 지침은 를 사용하여 리소스 기반 위임 정책 생성을 AWS Organizations 참조하세요. 샘플 정책은이 패턴의 추가 정보 섹션에서 샘플 리소스 기반 위임 정책을 참조하세요.

관리자

(선택 사항) 파운데이션 모델을 활성화합니다.

정책 변경 요약을 생성하려면 파이프라인을 배포하는 AWS 계정 의 Amazon Bedrock에서 Anthropic Claude 3.5 Sonnet 파운데이션 모델에 대한 액세스를 활성화합니다. 지침은 Amazon Bedrock 파운데이션 모델에 대한 액세스 추가 또는 제거를 참조하세요.

일반 AWS
작업설명필요한 기술

리포지토리를 복제합니다.

다음 명령을 입력하여 GitHub에서 organizations-policy-pipeline 리포지토리를 복제합니다.

git clone https://github.com/aws-samples/organizations-policy-pipeline.git

DevOps 엔지니어

배포 방법을 정의합니다.

  1. 복제된 리포지토리에서 variables.tf 파일을 엽니다.

  2. 에 배포된 리소스의 이름에 적용할 접두사를 project_name입력합니다.

  3. 에 원격 리포지토리의 공급자를 provider_type입력합니다. 파일에 유효한 값이 제공됩니다.

  4. 에 원격 리포지토리의 이름을 full_repository_name입력합니다.

  5. 에 정책을 배포하는 데 사용할 Git 브랜치의 이름을 branch_name입력합니다. 이 브랜치의 푸시 또는 병합은 파이프라인을 시작합니다. 일반적으로이 브랜치는 기본 브랜치입니다.

  6. 에 사용 중인 Terraform 버전을 terraform_version입력합니다.

  7. Amazon Bedrocktrue에서 변경 사항을 요약하도록 하려면에를 enable_bedrock입력합니다. 변경 사항 요약을 생성false하지 않으려면를 입력합니다.

  8. 에 배포된 리소스에 태그로 할당하려는 키-값 페어를 tags입력합니다.

  9. variables.tf 파일을 저장하고 닫습니다.

DevOps 엔지니어

파이프라인을 배포합니다.

  1. 다음 명령을 입력하여 계획을 생성하고 변경 사항을 검토합니다.

    terraform plan
  2. 다음 명령을 입력하여 계획을 적용하고 파이프라인 인프라를 생성합니다.

    terraform apply
DevOps 엔지니어, Terraform

원격 리포지토리를 연결합니다.

이전 단계에서 Terraform은 타사 리포지토리에 대한 CodeConnections 연결을 생성했습니다. AWS 개발자 도구 콘솔에서 연결 상태를에서 PENDING로 변경합니다AVAILABLE. 지침은 보류 중인 연결 업데이트를 참조하세요.

DevOps

Amazon SNS 주제를 구독하세요.

Terraform은 Amazon SNS 주제를 생성했습니다. 엔드포인트에서 주제를 구독하고 구독을 확인하여 승인자가 파이프라인에서 보류 중인 승인 작업에 대한 알림을 받을 수 있도록 합니다. 지침은 Amazon SNS 주제에 대한 구독 생성을 참조하세요.

일반 AWS
작업설명필요한 기술

원격 리포지토리를 채웁니다.

복제된 리포지토리에서 sample-repository 폴더의 내용을 원격 리포지토리에 복사합니다. 여기에는 environments, rcp-managementscp-management, 및 utils 폴더가 포함됩니다.

DevOps 엔지니어

환경을 정의합니다.

  1. environments 폴더에서 environments.json 파일을 엽니다. RCP AWS 계정 및 SCP의 대상 및 OUs를 정의하는 파일입니다. RCPs SCPs

  2. 예제 환경을 삭제합니다.

  3. 다음 형식으로 대상 환경을 추가합니다.

    [ { "ID": "<environment-name>", "Target": [ "<ou-name>:<ou-id>", "<account-name>:<account-id>" ] } ]

    위치:

    • <environment-name>는 OUs 및 AWS 계정 그룹에 할당하는 이름입니다. 매니페스트 파일에서이 이름을 사용하여 정책을 적용할 위치를 정의할 수 있습니다.

    • <ou-name>는 대상 OU의 이름입니다.

    • <ou-id>는 대상 OU의 ID입니다.

    • <account-name>는 대상의 이름입니다 AWS 계정.

    • <account-id>는 대상의 ID입니다 AWS 계정.

    예제는 소스 코드 리포지토리를 참조하세요.

  4. environments.json 파일을 저장하고 닫습니다.

DevOps 엔지니어

가드레일을 정의합니다.

  1. 원격 리포지토리의 rcp-management/guardrails 폴더로 이동합니다. RCP 매니페스트 파일의 가드레일을 정의하는 폴더입니다. 각 가드레일은 개별 파일에 있어야 합니다. 가드레일 파일에는 하나 이상의 문이 포함될 수 있습니다.

    참고

    SCPs 및 RCPs. 가드레일을 수정하면이 가드레일을 포함하는 모든 정책이 영향을 받습니다.

  2. 소스 코드 리포지토리에서 복사된 예제 가드레일을 삭제합니다.

  3. 새 .json 파일을 생성하고 설명 이름을 지정합니다.

  4. 생성한 .json 파일을 엽니다.

  5. 가드레일을 다음 형식으로 정의합니다.

    [ { "Sid": "<guardrail-name>", "Effect": "<effect-value>", "Action": [ "<action-name>" ], "Resource": "<resource-arn>", "Condition": { "<condition-operator>": { "<condition-key>": [ "<condition-value>" ] } } } ]

    위치:

    • <guardrail-name>는 가드레일의 고유한 이름입니다. 이 이름은 다른 가드레일에 사용할 수 없습니다.

    • <effect-value>Allow 또는 여야 합니다Deny. 자세한 내용은 효과를 참조하세요.

    • <action-name>는 서비스가 지원하는 작업의 유효한 이름이어야 합니다. 자세한 내용은 작업을 참조하세요.

    • <resource-arn>는 가드레일이 적용되는 리소스의 Amazon 리소스 이름(ARN)입니다. * 또는와 같은 와일드카드 문자를 사용할 수도 있습니다?. 자세한 내용은 리소스를 참조하세요.

    • <condition-operator>는 유효한 조건 연산자입니다. 자세한 내용은 조건 연산자를 참조하세요.

    • <condition-key>는 유효한 전역 조건 컨텍스트 키 또는 서비스별 컨텍스트 키입니다. 자세한 내용은 조건을 참조하세요.

    • <condition-value>는 가드레일이 적용되는지 여부를 평가하기 위해 조건에 사용되는 특정 값입니다. 자세한 내용은 조건을 참조하세요.

    RCP 가드레일의 예는 소스 코드 리포지토리를 참조하세요.

  6. .json 파일을 저장하고 닫습니다.

  7. 이 단계를 반복하여 필요한 만큼 RCP 가드레일을 생성합니다.

  8. scp-management/guardrails 폴더에서이 단계를 반복하여 SCPs에 필요한 수만큼 가드레일을 생성합니다. SCP 가드레일의 예는 소스 코드 리포지토리를 참조하세요.

DevOps 엔지니어

정책을 정의합니다.

  1. 원격 리포지토리의 rcp-management/policies 폴더로 이동합니다. RCP 매니페스트 파일에 대한 전체 정책을 정의하는 폴더입니다. 각 정책은 개별 파일이어야 합니다.

    참고

    이 폴더의 정책을 수정하면 매니페스트 파일에 정의된 대로이 정책이 적용되는 모든 계정 또는 OUs에 정책 변경 사항이 적용됩니다.

  2. 소스 코드 리포지토리에서 복사된 예제 정책을 삭제합니다.

  3. 새 .json 파일을 생성하고 설명 이름을 지정합니다.

  4. 생성한 .json 파일을 엽니다.

  5. RCP를 정의합니다. RCPs 소스 코드 리포지토리를 참조하거나 AWS Organizations 설명서의 리소스 제어 정책 예제를 참조하세요.

  6. .json 파일을 저장하고 닫습니다.

  7. 이 단계를 반복하여 필요한 만큼 RCPs 생성합니다.

  8. scp-management/policies 폴더에서이 단계를 반복하여 필요한 만큼 SCPs 생성합니다. SCPs 소스 코드 리포지토리를 참조하거나 AWS Organizations 설명서의 서비스 제어 정책 예제를 참조하세요.

DevOps 엔지니어
작업설명필요한 기술

매니페스트 파일을 구성합니다.

  1. rcp-management 폴더에서 rcp-management.json 파일을 엽니다. 대상 환경에 적용할 RCP 가드레일과 전체 RCPs를 정의하는 파일입니다. 이 파일의 예는 소스 코드 리포지토리를 참조하십시오.

  2. 예제 문을 삭제합니다.

  3. 다음 형식으로 새 문을 추가합니다.

    [ { "SID": "<statement-name>", "Target": { "Type": "<target-type>", "ID": "<target-name>" }, "Guardrails": [ "<guardrail-name>" ], "Policy": "<policy-name>", "Comments": "<comment-text>" } ]

    위치:

    • <statement-name>는 문의 고유한 이름입니다.

    • <target-type>는 정책을 적용하려는 대상의 유형입니다. 유효한 값은 Account, OU, Environment 또는 Tag입니다.

    • <target-name>는 정책을 적용하려는 대상의 식별자입니다. 다음 중 하나를 입력하십시오.

      • 의 경우 식별자를 로 AWS 계정입력합니다<account-name>:<account-id>.

      • OU의 경우 식별자를 로 입력합니다<OU-name>:<ou-id>.

      • 환경의 경우 environments.json 파일에 정의한 고유한 이름을 입력합니다.

      • 태그에 키-값 페어를 로 입력합니다<tag-key>:<tag-value>.

    • <guardrail-name>rcp-management/guardrails 폴더에서 정의한 RCP 가드레일의 고유한 이름입니다. 이 요소에 여러 가드레일을 추가할 수 있습니다. 가드레일을 적용하지 않으려면이 필드를 비워 둘 수 있습니다.

    • <policy-name>rcp-management/policies 폴더에서 정의한 RCP의 고유한 이름입니다. 이 요소에는 정책을 하나만 추가할 수 있습니다. 정책을 적용하지 않으려면이 필드를 비워 둘 수 있습니다.

    • <comment-text>는 설명서용으로 입력할 수 있는 설명입니다. 파이프라인 처리 중에는이 필드가 사용되지 않습니다. 설명을 추가하지 않으려면이 필드를 비워 둘 수 있습니다.

  4. 이 단계를 반복하여 조직의 RCPs을 추가합니다.

  5. rcp-management.json 파일을 저장하고 닫습니다.

  6. scp-management 폴더의 scp-management.json 파일에서이 단계를 반복합니다. 대상 환경에 적용할 SCP 가드레일과 전체 SCPs를 정의하는 파일입니다. 이 파일의 예는 소스 코드 리포지토리를 참조하세요.

DevOps 엔지니어

파이프라인을 시작합니다.

variables.tf 파일에서 정의한 원격 리포지토리의 브랜치에 변경 사항을 커밋하고 푸시합니다. 일반적으로 이는 main브랜치입니다. CI/CD 파이프라인이 자동으로 시작됩니다. 파이프라인 오류가 있는 경우이 패턴의 문제 해결 섹션을 참조하세요.

DevOps 엔지니어

변경 사항을 승인합니다.

Validate-Plan CodeBuild 프로젝트가 완료되면 정책 승인자는 이전에 구성한 Amazon SNS 주제를 통해 알림을 받습니다. 다음을 수행합니다.

  1. 알림 메시지를 엽니다.

  2. 사용 가능한 경우 정책 변경 사항 요약을 검토합니다.

  3. CodePipeline에서 승인 작업 승인 또는 거부의 지침을 따릅니다.

일반 AWS, 정책 승인자

배포를 검증합니다.

  1. 위임된 관리자 계정의 AWS Organizations 콘솔에 로그인합니다 AWS Organizations.

  2. 서비스 제어 정책 페이지에서 생성한 SCPs가 나열되어 있는지 확인합니다.

  3. 파이프라인을 통해 관리되는 SCP를 선택하고 의도한 대상에 적용되는지 확인합니다.

  4. 리소스 제어 정책 페이지에서 생성한 RCPs가 나열되어 있는지 확인합니다.

  5. 파이프라인을 통해 관리되는 RCP를 선택하고 의도한 대상에 적용되는지 확인합니다.

일반 AWS

문제 해결

문제Solution

파이프라인 Validate-Plan 단계의 매니페스트 파일 오류

scp-management.json 또는 파일에 오류가 있는 경우 파이프라인 출력에 "매니페스트 rcp-management.json 파일에 대한 검증 및 계획 단계의 파이프라인 오류" 메시지가 나타납니다. 오류에는 잘못된 환경 이름, 중복된 SIDs 또는 잘못된 필드 또는 값이 포함될 수 있습니다. 다음을 수행합니다.

  1. 에서 빌드 세부 정보 보기 AWS CodeBuild의 지침을 따릅니다.

  2. 빌드 로그에서 검증 오류를 찾습니다. 오류는 빌드 실패 원인에 대한 자세한 정보를 제공합니다.

  3. 해당 .json 파일을 업데이트합니다.

  4. 업데이트된 파일을 커밋하고 원격 리포지토리로 푸시합니다. 파이프라인이 다시 시작됩니다.

  5. 상태를 모니터링하여 유효성 검사 오류가 해결되었는지 확인합니다.

파이프라인 Validate-Plan 단계의 IAM Access Analyzer 조사 결과

가드레일 또는 정책 정의에 오류가 있는 경우 파이프라인 출력에 “검증 및 계획 단계 중 IAM Access Analyzer의 결과” 메시지가 나타납니다. 이 패턴은 IAM Access Analyzer를 사용하여 최종 정책을 검증합니다. 다음을 수행합니다.

  1. 에서 빌드 세부 정보 보기 AWS CodeBuild의 지침을 따릅니다.

  2. 빌드 로그에서 IAM Access Analyzer 검증 오류를 찾습니다. 오류는 빌드 실패 원인에 대한 자세한 정보를 제공합니다. 결과 유형에 대한 자세한 내용은 IAM 정책 검증 검사 참조를 참조하세요.

  3. 가드레일 또는 정책에 해당하는 .json 파일을 업데이트합니다.

  4. 업데이트된 파일을 커밋하고 원격 리포지토리로 푸시합니다. 파이프라인이 다시 시작됩니다.

  5. 상태를 모니터링하여 유효성 검사 오류가 해결되었는지 확인합니다.

관련 리소스

추가 정보

샘플 리소스 기반 위임 정책

다음은에 대한 샘플 리소스 기반 위임 정책입니다 AWS Organizations. 이를 통해 위임된 관리 계정이 조직의 SCPs 및 RCPs 관리할 수 있습니다. 다음 샘플 정책에서를 정책 관리 파이프라인을 배포하는 계정의 ID<MEMBER_ACCOUNT_ID>로 바꿉니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DelegationToAudit", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<MEMBER_ACCOUNT_ID>:root" }, "Action": [ "organizations:ListTargetsForPolicy", "organizations:CreatePolicy", "organizations:DeletePolicy", "organizations:AttachPolicy", "organizations:DetachPolicy", "organizations:DisablePolicyType", "organizations:EnablePolicyType", "organizations:UpdatePolicy", "organizations:DescribeEffectivePolicy", "organizations:DescribePolicy", "organizations:DescribeResourcePolicy" ], "Resource": "*" } ] }

기존 정책을 파이프라인으로 마이그레이션

이 파이프라인을 통해 마이그레이션하고 관리하려는 기존 SCPs 또는 RCPs가 있는 경우 코드 리포지토리의 sample-repository/utils 폴더에 있는 Python 스크립트를 사용할 수 있습니다. 이러한 스크립트에는 다음이 포함됩니다.

  • check-if-scp-exists-in-env.py -이 스크립트는 environments.json 파일에 정의한 특정 환경의 대상에 지정된 정책이 적용되는지 여부를 확인합니다. 다음 명령을 입력하여이 스크립트를 실행합니다.

    python3 check-if-scp-exists-in-env.py \ --policy-type <POLICY_TYPE> \ --policy-name <POLICY_NAME> \ --env-id <ENV_ID>

    이 명령에서 다음을 바꿉니다.

    • <POLICY_TYPE>scp 또는 rcp

    • <POLICY_NAME>는 SCP 또는 RCP의 이름입니다.

    • <ENV_ID>environments.json 파일에 정의한 환경의 ID입니다.

  • create-environments.py -이 스크립트는 환경의 현재 SCPs 및 RCPs를 기반으로 environment.json 파일을 생성합니다. 를 통해 배포된 정책은 제외됩니다 AWS Control Tower. 다음 명령을 입력하여이 스크립트를 실행합니다. 여기서 <POLICY_TYPE>scp 또는 입니다rcp.

    python create-environments.py --policy-type <POLICY_TYPE>
  • verify-policies-capacity.py -이 스크립트는 정의한 각 환경을 확인하여 각 AWS Organizations 정책 관련 할당량에 남아 있는 용량의 양을 결정합니다. environments.json 파일에서 확인할 환경을 정의합니다. 다음 명령을 입력하여이 스크립트를 실행합니다. 여기서 <POLICY_TYPE>scp 또는 입니다rcp.

    python verify-policies-capacity.py --policy-type <POLICY_TYPE>