기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
CodePipeline, IAM Access Analyzer 및 AWS CloudFormation 매크로를 사용하여 AWS 계정에서 IAM 정책 및 역할을 자동으로 검증하고 배포
작성자: Helton Ribeiro(AWS) 및 Guilherme Simoes(AWS)
요약
참고: AWS CodeCommit은 더 이상 신규 고객에게 제공되지 않습니다. AWS CodeCommit의 기존 고객은 서비스를 정상적으로 계속 사용할 수 있습니다. 자세히 알아보기
이 패턴은 단계를 설명하고 개발 팀이 Amazon Web Services(AWS) 계정에서 AWS Identity and Access Management(IAM) 정책 및 역할을 생성할 수 있도록 배포 파이프라인을 생성하는 코드를 제공합니다. 이 접근 방식은 조직이 운영 팀의 오버헤드를 줄이고 배포 프로세스를 가속화하는 데 도움이 됩니다. 또한 개발자가 기존 거버넌스 및 보안 제어와 호환되는 IAM 역할 및 정책을 만들 수 있습니다.
이 패턴의 접근 방식은 AWS Identity and Access Management Access Analyzer를 사용하여 IAM 역할에 연결하려는 IAM 정책을 검증하고 AWS CloudFormation을 사용하여 IAM 역할을 배포합니다. 하지만 개발 팀은 AWS CloudFormation 템플릿 파일을 직접 편집하는 대신 JSON 형식의 IAM 정책 및 역할을 생성합니다. AWS CloudFormation 매크로는 배포를 시작하기 전에 이러한 JSON 형식의 정책 파일을 AWS CloudFormation IAM 리소스 유형으로 변환합니다.
배포 파이프라인(RolesPipeline
)에는 소스, 검증 및 배포 스테이지가 있습니다. 소스 단계에서 개발 팀은 IAM 역할 및 정책 정의가 포함된 JSON 파일을 AWS CodeCommit 리포지토리로 푸시합니다. 그런 다음 AWS CodeBuild는 스크립트를 실행하여 해당 파일을 검증하고 Amazon Simple Storage Service(S3) 버킷으로 복사합니다. 개발 팀은 별도의 S3 버킷에 저장된 AWS CloudFormation 템플릿 파일에 직접 액세스할 수 없으므로 JSON 파일 생성 및 검증 프로세스를 따라야 합니다.
마지막으로, 배포 단계에서 AWS CodeDeploy는 AWS CloudFormation 스택을 사용하여 계정의 IAM 정책 및 역할을 업데이트하거나 삭제합니다.
중요
이 패턴의 워크플로는 개념 증명(POC)이므로 테스트 환경에서만 사용하는 것이 좋습니다. 프로덕션 환경에서 이 패턴의 접근 방식을 사용하려면 IAM 설명서에서 IAM의 보안 모범 사례를 참조하고 IAM 역할 및 AWS 서비스에 필요한 사항을 변경하십시오.
사전 조건 및 제한 사항
사전 조건
활성 상태의 AWS 계정.
RolesPipeline
파이프라인의 새 S3 버킷 또는 기존 S3 버킷. 사용 중인 액세스 보안 인증에 이 버킷에 객체를 업로드할 권한이 있는지 확인하십시오.AWS Command Line Interface(AWS CLI), 설치 및 구성됨. 이에 관한 자세한 내용은 AWS CLI 설명서의 AWS CLI 설치, 업데이트 및 제거를 참조하십시오.
AWS Serverless Application Model(AWS SAM) CLI, 설치 및 구성됨. 이에 관한 자세한 내용은 AWS SAM 설명서의 AWS SAM CLI 설치를 참조하십시오.
Python 3 로컬 머신에 설치. 자세한 내용은 Python 설명서
를 참조하십시오. Git 클라이언트, 설치 및 구성됨.
GitHub
IAM roles pipeline
리포지토리 로컬 머신에 복제.기존 JSON 형식의 IAM 정책 및 역할. 자세한 내용은 GitHub
IAM roles pipeline
리포지토리에서 README를 참조하십시오. 개발자 팀은 이 솔루션의 AWS CodePipeline, CodeBuild 및 CodeDeploy 리소스를 편집할 권한이 없어야 합니다.
제한 사항
이 패턴의 워크플로는 개념 증명(POC)이므로 테스트 환경에서만 사용하는 것이 좋습니다. 프로덕션 환경에서 이 패턴의 접근 방식을 사용하려면 IAM 설명서에서 IAM의 보안 모범 사례를 참조하고 IAM 역할 및 AWS 서비스에 필요한 사항을 변경하십시오.
아키텍처
다음 다이어그램은 CodePipeline, IAM Access Analyzer 및 AWS CloudFormation 매크로를 사용하여 계정에서 IAM 역할 및 정책을 자동으로 검증하고 배포하는 방법을 보여줍니다.

이 다이어그램은 다음 워크플로를 보여줍니다.
개발자는 IAM 정책 및 역할에 대한 정의가 포함된 JSON 파일을 작성합니다. 개발자가 CodeCommit 리포지토리로 코드를 푸시하면 CodePipeline이
RolesPipeline
파이프라인을 시작합니다.CodeBuild는 IAM Access Analyzer를 사용하여 JSON 파일을 검증합니다. 보안 또는 오류 관련 발견이 발견되면 배포 프로세스가 중지됩니다.
보안 또는 오류 관련 발견이 없는 경우 JSON 파일이
RolesBucket
S3 버킷으로 전송됩니다.그러면 AWS Lambda 함수로 구현된 AWS CloudFormation 매크로가 버킷에서 JSON 파일을 읽고 이를 AWS CloudFormation IAM 리소스
RolesBucket
유형으로 변환합니다.사전 정의된 AWS CloudFormation 스택은 계정에서 IAM 정책 및 역할을 설치, 업데이트 또는 삭제합니다.
자동화 및 규모 조정
이 패턴을 자동으로 배포하는 AWS CloudFormation 템플릿은 GitHub IAM 역할 파이프라인
도구
AWS Command Line Interface(AWS CLI)는 명령줄 쉘에서 명령을 사용하여 AWS 서비스와 상호 작용할 수 있는 오픈 소스 도구입니다.
AWS Identity and Access Management(IAM)는 누구에게 인증 및 사용 권한이 있는지 제어하여 AWS 리소스에 대한 액세스를 안전하게 관리할 수 있도록 도와줍니다.
IAM Access Analyzer를 사용하면 외부 엔터티와 공유되는 조직 및 계정 내 리소스(예: S3 버킷 또는 IAM 역할)를 식별할 수 있습니다. 이를 통해 리소스 및 데이터에 대한 의도치 않은 액세스를 식별할 수 있습니다.
AWS Serverless Application Model(AWS SAM)은 AWS 클라우드에서 서버리스 애플리케이션을 빌드하는 데 사용할 수 있는 오픈 소스 프레임워크입니다.
code
이 패턴의 소스 코드와 템플릿은 GitHub IAM roles pipeline
에픽
작업 | 설명 | 필요한 기술 |
---|---|---|
샘플 리포지토리를 복제합니다. | GitHub IAM 역할 파이프라인 | 앱 개발자, 일반 AWS |
작업 | 설명 | 필요한 기술 |
---|---|---|
파이프라인을 배포합니다. |
| 앱 개발자, 일반 AWS |
파이프라인의 리포지토리를 복제합니다. |
| 앱 개발자, 일반 AWS |
작업 | 설명 | 필요한 기술 |
---|---|---|
유효한 IAM 정책 및 역할로 RolesPipeline 파이프라인을 테스트합니다. |
| 앱 개발자, 일반 AWS |
유효하지 않은 IAM 정책 및 역할로 RolesPipeline 파이프라인을 테스트합니다. |
| 앱 개발자, 일반 AWS |
작업 | 설명 | 필요한 기술 |
---|---|---|
정리를 준비하십시오. | S3 버킷을 비운 다음 | 앱 개발자, 일반 AWS |
RolesStack 스택을 삭제합니다. |
| 앱 개발자, 일반 AWS |
RolesPipeline 스택을 삭제합니다. |
| 앱 개발자, 일반 AWS |
관련 리소스
IAM Access Analyzer - 정책 검증
(AWS 뉴스 블로그) AWS CloudFormation 매크로를 사용하여 템플릿에 사용자 지정 처리 수행(AWS CloudFormation 설명서)
Python을 사용한 Lambda 함수 구축(AWS Lambda 설명서)