본문으로 건너뛰기

부록. AWS STS 발급

이 문서에서는 AWS Security Token Service(AWS STS)를 사용하여 AWS S3 리소스에 대한 액세스를 제어할 수 있는 임시 보안 자격 증명의 생성과 활용 예제를 안내합니다.

안내

카카오클라우드에서 제공하는 S3 API Feature 목록은 S3 문서를 참고하시기 바랍니다.

API 사용 준비

API를 호출하기 위해 필요한 사전 작업은 API 사용 준비 문서를 참고하시기 바랍니다.

STS 토큰 발급

AssumeRoleWithWebIdentity를 사용하여 AWS 내 리소스에 접근하기 위한 Access key ID, Secret access key, Security token을 발급합니다. Openstack token을 이용하여 token 사용자의 권한으로 임시 자격 증명을 만들 수 있습니다.

Request
STS 토큰 발급
curl  -X POST \ 'https://objectstorage.kr-central-2.kakaocloud.com/' \
--header 'Accept: */*' \
--header 'Content-Type: application/json' \
--data-raw '{
"Action" : "AssumeRoleWithWebIdentity",
"DurationSeconds" : 1800,
"ProviderId" : "iam.kakaocloud.com",
"WebIdentityToken" : "{x-auth-token}"
}'
메서드요청 URL
POSThttps://objectstorage.kr-central-2.kakaocloud.com/
필드형식설명
Action*String수행하려는 Action의 종류
- AssumeRoleWithWebIdentity만 지원됨
DurationSecondsInt임시 자격 증명이 유효한 지속 기간
ProviderIdStringWebIdentity를 제공하는 주체. 현재는 iam.kakaocloud.com만 제공함
WebIdentityTokenStringOpenstack에서 발급한 토큰
Response
Response 예시
<AssumeRoleWithWebIdentityResponse>
<AssumeRoleWithWebIdentityResult>
<SubjectFromWebIdentityToken>{user_id}</SubjectFromWebIdentityToken>
<Credentials>
<SessionToken>{session_token}</SessionToken>
<SecretAccessKey>{session_secret_key}</SecretAccessKey>
<Expiration>{expiration}</Expiration>
<AccessKeyId>{session_access_key}</AccessKeyId>
</Credentials>
<Provider>iam.kakaocloud.com</Provider>
</AssumeRoleWithWebIdentityResult>
<ResponseMetadata>
<RequestId>{request_id}</RequestId>
</ResponseMetadata>
</AssumeRoleWithWebIdentityResponse>
필드유형설명
user_idString임시 자격 증명이 사용할 사용자 ID
session_tokenString임시 자격 증명의 세션 토큰
session_secret_keyString임시 자격 증명의 보안 액세스 키
session_access_keyString임시 자격 증명의 보안 액세스 키 ID
expirationTimestamp임시 자격 증명의 만료 시간
상태 코드응답 내용설명
200OK성공
400BadRequest요청 정보 오류
403Forbidden권한 없음

사용 예제 - get bucket list

버킷 목록 조회
curl --location 'https://objectstorage.kr-central-2.kakaocloud.com/' \ 
--header 'X-Amz-Security-Token: {발급받은 STS Session Token}' \
--header 'X-Amz-Content-Sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855' \
--header 'X-Amz-Date: 20230719T074808Z' \
--header 'Authorization: AWS4-HMAC-SHA256 Credential=2d554f581e81aa56a120fc29bd806405/20230719/kr-central-2/s3/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date;x-amz-security-token, Signature=3f0f3cd5a25406947c936e8d51cdd13f3d5b4fafa1078da4e1b7b3df0d1e662a'