본문으로 건너뛰기

부록. AWS STS 발급

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

안내

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

시작하기 전에​

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

STS 토큰 발급​

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

Request​
STS 토큰 발급
curl  -X POST 'https://objectstorage.{region_name}.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.{region_name}.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임시 자격 증명이 사용할 클라우드 계정
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'