AWS IAM 역할의 사본을 만드는 방법

AWS에서 IAM 역할의 복사본을 만들어야 하는 경우가 있습니다. 역할의 권한 범위 변경을 실험하고 싶지만 현재 사용 중인 역할은 건드리지 않으려는 경우가 있습니다.

이에 접근하는 한 가지 방법은 모든 정책과 함께 기존 역할을 복제하고 새 역할에 필요한 변경을 수행한 다음 테스트를 실행하는 것입니다.

하지만aws iam copy-role 명령은 없습니다... 따라서 유일한 옵션은 역할 및 관련 정책을 수동으로 복제하거나 프로세스를 스크립팅하는 것입니다.

다음은 Node.js에서 이러한 스크립트를 구현한 것입니다. 신뢰 관계 정책, 인라인 정책 및 관리형 정책(AWS 및 고객 관리 모두)을 사용하여 역할의 복사본을 만듭니다.

repository에서 코드를 찾을 수 있습니다.

전제 조건



스크립트를 실행하려면 Node.js가 필요합니다.

node --version
v14.15.5 # also tested with v12.21.0


Node를 로컬에 설치하지 않은 경우 Docker에서 스크립트를 실행할 수 있습니다.

docker run -it --rm -v $(pwd):/var/app -w /var/app node:14-alpine sh

export AWS_ACCESS_KEY_ID=...
export AWS_SECRET_ACCESS_KEY=...


용법




npm install


역할을 복사하려면 원본 및 대상 역할 이름(ARN 아님)을 스크립트에 전달합니다.

node copy-role.js SOURCE_ROLE_NAME TARGET_ROLE_NAME


출력 예:

/var/app # node copy-role.js copy-role-poc copy-role-poc-target-role

--> Parsing arguments from command line...
<-- Arguments loaded. Source role name: copy-role-poc, target role name: copy-role-poc-target-role

--> Checking if AWS credentials are loaded...
<-- Credentials found.

--> Fetching source role...
<-- Source role loaded.

--> Fetching inline policies for the role...
<-- Loaded 2 inline policy names.
--> Fetching inline policies...
<-- Loaded inline policies.

--> Fetching managed policies for the role...
<-- Loaded 2 managed policies.

--> Creating a new role copy-role-poc-target-role...
<-- Created role copy-role-poc-target-role.

--> Adding inline policies to copy-role-poc-target-role...
<-- Added 2 inline policies.

--> Adding managed policies to copy-role-poc-target-role...
<-- Added 2 managed policies.


구현 세부정보



원하는 경우 저장소의 코드를 검사할 수 있습니다. 간단히 말해서 AWS JavaScript SDK를 사용하여 다음을 수행합니다.
  • 신뢰 관계 정책과 함께 소스 역할을 가져옵니다
  • .
  • 소스 역할의 인라인 정책을 가져옵니다
  • .
  • 소스 역할의 관리형 정책 가져오기(AWS 및 고객 생성)
  • 모든 관련 속성( Path , AssumeRolePolicyDocument , Description , MaxSessionDuration , PermissionsBoundary , Tags )
  • 소스 역할에 있는 모든 인라인 정책을 새 역할에 추가합니다
  • .
  • 소스 역할의 모든 관리형 정책을 연결합니다
  • .

    프로세스는 매우 간단합니다... 유일하게 흥미로운 세부 사항은 2단계와 3단계에서 정책 응답에 페이지를 매길 수 있다는 사실을 수용하기 위해 재귀 가져오기가 필요하다는 것입니다.

    AWS SDK APIs 중고:
  • getRole()
  • listRolePolicies()
  • getRolePolicy()
  • listAttachedRolePolicies()
  • createRole()
  • putRolePolicy()
  • attachRolePolicy()

  • 마지막으로 일부ASCII art를 추가할 수 있는 기회였습니다.



    참조


  • https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/IAM.html
  • https://stackoverflow.com/questions/61221952/need-to-make-an-identical-copy-of-aws-iam-role-including-policies-and-trust-rel
  • https://github.com/maximivanov/aws-iam-copy-role

  • ...



    한 번 자동화하고 영원히 사용하십시오. 솔직히 지금까지 한 번만 사용하면되었습니다 ... 🙃

    한 번 자동화하고 모든 사람이 사용할 수 있도록 공유할 수 있습니까? 희망적으로 더 의미가 있습니다!

    이러한 유형의 콘텐츠가 마음에 들면 Twitter에서 최신 업데이트를 확인할 수 있습니다.

    좋은 웹페이지 즐겨찾기