부록. 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 |
---|---|
POST | https://objectstorage.kr-central-2.kakaocloud.com/ |
필드 | 형식 | 설명 |
---|---|---|
Action* | String | 수행하려는 Action의 종류 - AssumeRoleWithWebIdentity 만 지원됨 |
DurationSeconds | Int | 임시 자격 증명이 유효한 지속 기간 |
ProviderId | String | WebIdentity를 제공하는 주체. 현재는 iam.kakaocloud.com 만 제공함 |
WebIdentityToken | String | Openstack에서 발급한 토큰 |
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_id | String | 임시 자격 증명이 사용할 사용자 ID |
session_token | String | 임시 자격 증명의 세션 토큰 |
session_secret_key | String | 임시 자격 증명의 보안 액세스 키 |
session_access_key | String | 임시 자격 증명의 보안 액세스 키 ID |
expiration | Timestamp | 임시 자격 증명의 만료 시간 |
상태 코드 | 응답 내용 | 설명 |
---|---|---|
200 | OK | 성공 |
400 | BadRequest | 요청 정보 오류 |
403 | Forbidden | 권한 없음 |
사용 예제 - 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'