AWS STS란?
IAM 역할을 사용해 AWS에 액세스하는 경우, STS Endpoint에서 세션 토큰을 요청한다. Region STS 엔드포인트의 세션 토큰은 모든 리전에서 유효하다. AWS에서는 Region Endpoint를 사용하도록 권장하고있다. 클로벌 STS Endpoint(https://sts.amazonaws.com)의 세션 토큰은 기본적으로 STS가 활성화된 AWS Region에서만 유효하다. AWS STS를 사용하면 AWS Resource에 대한 액세스를 제어할 수 있다.
임시 보안 자격 증명은 다음과 같은 차이점을 제외하고는 IAM 사용자가 사용할 수 있는 장기 액세스키와 거의 동일하다.
- 임시 보안 자격 증명은 그 이름을 임시하듯 단기적이다. 이 자격 증명은 몇 분에서 길게는 몇 시간 까지 지속되도록 구성할 수 있다. 자격 증명이 만료되면 AWS는 그 자격 증명을 인식 못하거나 모든 API 요청을 허용하지 않는다.
- 임시 보안 자격 증명은 사용자와 함께 저장되지 않지만 동적으로 생성되어 요청시 사용자에게 제공된다. 임시 보안 자격 증명이 만료 되었을 때(심지어 만료 전이라도) 사용자는 새 자격 증명을 요청할 수 있다.
AWS STS Demo
우선 아래와 같은 권한이 있는 IAM User를 생성하고 AWS CLI에 Hello라는 Profile로 미리 로그인 해준다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::123456789012:role/*"
}
]
}
$ aws configure --profile hello
그리고 아래와 같은 Policy를 가진 IAM Role(apdev-app-role)을 하나 생성해주고 해당 Role의 Trust Relationships를 아래와 같이 수정해준다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::123456789012:user/Hello"
},
"Action": "sts:AssumeRole"
}
]
}
다음과 같은 CLI 명령어로 임시 보안 자격 증명을 발급 받을 수 있다.
$ aws sts assume-role --role-arn arn:aws:iam::123456789012:role/role-name --role-session-name "RoleSession1" --profile IAM-user-name
그러면 아래와 같이 임시로 apdev-ap-role에 대한 자격증명이 임시로 발급된것을 알 수 있다.
그리고 위 발급된 Token을 가지고 ~/.aws/credentials에 해당 값을 넣거나 aws configure을 통해 해당 Key들을 넣어준다.
아래의 명령어를 통해서 값을 넣어줄 수도 있다.
$ aws configure set --profile S3Read aws_access_key_id ASIA5ZRQWYYXX7YI2BPA
$ aws configure set --profile S3Read aws_secret_access_key K94MM+C44vAwXTQRQzLM3Vo0BqWx86+koLc4qdV8
$ aws configure set --profile S3Read aws_session_token IQoJb3JpZ2luX2VjENP//////////wEaDmJoQoU1q0rimoi+Vgs7pdgAViCRRrxc6x26Tgp28NZFxh13AhppfvLWVrIqi0dnktOFDhZS88AnLQVkpH6Tw==
또는 ~/.aws/credentials에 직접 넣고 싶다면 아래와 같은 형식으로 작성해주면된다.
그러면 아래와 같이 정상 적으로 STS를 통해서 임시로 Key를 발급 받아 조회가 되는 것을 볼 수 있다.
STS 발급 전
STS 발급 후
'Cloud Computing > Amazon Web Service' 카테고리의 다른 글
[AWS] Ansible Automation Architecture (0) | 2023.08.01 |
---|---|
[Amazon Web Services] 인코딩 되어있는 에러메시지 디코딩해서 보기(Encoded authorization failure message) (0) | 2022.06.29 |
댓글