카테고리 없음

AWS STS 임시자격증명 발행하기 (boto3)

behonestar 2018. 7. 25. 16:27

  정책 생성

- S3에 PutObject 허용하는 정책 생성

- 정책 이름 : S3PutObject

{

    "Version": "2012-10-17",

    "Statement": [

        {

            "Sid": "VisualEditor0",

            "Effect": "Allow",

            "Action": "s3:PutObject",

            "Resource": "arn:aws:s3:::*/*"

        }

    ]

}




  사용자 생성

- testuser

- 로그인 비밀번호, 권한 없이 생성

- 사용자 ARN 확인 (arn:aws:iam:...)





  역할 생성 (사용자와 정책 맵핑)

- 신뢰할 수 있는 유형의 개체 : 아무거나 선택 (나중에 편집해야 함)

- 정책 : S3PutObject

- 역할 이름 : Device-Role

- 역할 생성 후 [신뢰 관계 편집]하여 사용자 ARN 등록

{

  "Version": "2012-10-17",

  "Statement": [

    {

      "Effect": "Allow",

      "Principal": {

        "AWS": "arn:aws:iam::************:user/testuser"

      },

      "Action": "sts:AssumeRole"

    }

  ]

}


- 역할 ARN 확인 (arn:aws:iam:...)




  임시자격증명 발행

- testuser의 access key와 secret key 입력

- 역할 ARN 입력

import boto3


aws_access_key_id = '***'

aws_secret_access_key = '***'


if __name__ == '__main__':

    client = boto3.client('sts',

                          aws_access_key_id=aws_access_key_id,

                          aws_secret_access_key=aws_secret_access_key)


    response = client.assume_role(

        RoleArn='arn:aws:iam::************:role/Device-Role',

        RoleSessionName='ExampleSessionName')


    tmp_access_key = response['Credentials']['AccessKeyId']

    tmp_secret_key = response['Credentials']['SecretAccessKey']

    print(tmp_access_key, tmp_secret_key)


실행 결과

* temp access key: ASIA4JXH***MYOWS3WA

* temp secret key: 843oWl9i***MU/Oo0IzBNK9llcTJvF4lh***u9lh