AWS CLI로 IAM Role 생성해 보기

AWS CLI로 IAM Role 생성해 보기

AWS CLI로 IAM Role을 생성해 보는 과정을 정리해 봤습니다.
Clock Icon2022.03.31 11:27

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

안녕하세요 클래스메소드 김재욱(Kim Jaewook) 입니다. 이번에는 AWS CLI로 IAM Role을 생성해 보는 과정을 정리해 봤습니다.

json 생성

먼저 sts:AssumeRole 이라는 임시 자격 증명을 받을 수 있는 정책을 생성합니다.

이 정책을 생성하기 위해서는 json 파일을 작성할 필요가 있습니다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:Describe*",
                "iam:ListRoles",
                "sts:AssumeRole"
            ],
            "Resource": "*"
        }
    ]
}

기본적인 json 정책 코드는 다음과 같습니다.

여기서 sts:AssumeRole만을 사용하고 싶으면 아래와 같은 코드가 됩니다.

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

IAM Role 생성

aws iam create-role \
    --role-name test-role \
    --assume-role-policy-document file://assumeRole.json

aws iam create-role 명령은 IAM 역할을 생성하고, 이전에 생성한 json 파일에 따라 신뢰 관계를 정의합니다.

aws iam attach-role-policy \
    --role-name test-role \
    --policy-arn arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore

aws iam attach-role-policy \
    --role-name test-role \
    --policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy

이어서 각각의 정책을 IAM Role에 추가합니다.

여기까지 하면 무사히 IAM Role 생성이 된 것을 확인할 수 있습니다.

Instance Profile 생성

이어서 EC2 Instance에 IAM Role을 연결하기 위해서는 Instance Profile을 생성할 필요가 있습니다.

aws iam create-instance-profile \
    --instance-profile-name test-role

aws iam add-role-to-instance-profile \
    --instance-profile-name test-role \
    --role-name test-role

다음 명령어로 Instance Profile을 생성합니다. Instance Profile 이름은 IAM Role이름과 동일하게 사용해도 상관 없습니다.

aws ec2 associate-iam-instance-profile --iam-instance-profile Name=test-role --instance-id i-xxxx

그리고 위 명령어로 인스턴스에 Instance Profile을 추가하면 EC2 Instance에 IAM Role이 추가된 것을 확인할 수 있습니다.

본 블로그 게시글을 읽고 궁금한 사항이 있으신 분들은 kis2702@naver.com로 보내주시면 감사하겠습니다.

참고

この記事をシェアする

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.