AWS SDK 또는 CLI로 GetSessionToken 사용하기

AWS SDK 또는 CLI로 GetSessionToken 사용하기

이 코드 예제들은 GetSessionToken을 사용하는 방법을 보여드려요. 액션 예제는 더 큰 프로그램에서 발췌한 코드 조각이라 맥락 안에서 실행해야 해요. 이 액션의 맥락은 다음 코드 예제에서 확인할 수 있어요.

출처: 문서

본문

  • MFA 토큰이 필요한 세션 토큰 얻기

CLI (AWS CLI)

IAM 자격 증명에 대한 단기 자격 증명을 얻으려면 다음 get-session-token 명령이 호출하는 IAM 자격 증명에 대한 단기 자격 증명을 가져와요. 결과 자격 증명은 정책에서 다중 인증(MFA)이 요구되는 요청에 사용할 수 있어요. 자격 증명은 생성된 지 15분 뒤에 만료돼요.

aws sts get-session-token \
	--duration-seconds 900 \
	--serial-number "YourMFADeviceSerialNumber" \
	--token-code 123456

출력:

{
	"Credentials": {
		"AccessKeyId": "ASIAIOSFODNN7EXAMPLE",
		"SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY",
		"SessionToken": "AQoEXAMPLEH4aoAH0gNCAPyJxz4BlCFFxWNE1OPTgk5TthT+FvwqnKwRcOIfrRh3c/LTo6UDdyJwOOvEVPvLXCrrrUtdnniCEXAMPLE/IvU1dYUg2RVAJBanLiHb4IgRmpRV3zrkuWJOgQs8IZZaIv2BXIa2R4OlgkBN9bkUDNCJiBeb/AXlzBBko7b15fjrBs2+cTQtpZ3CYWFXG8C5zqx37wnOE49mRl/+OtkIKGO7fAE",
		"Expiration": "2020-05-19T18:06:10+00:00"
	}
}

자세한 내용은 AWS IAM User Guide의 Requesting Temporary Security Credentials를 참고해요.

API 상세는 GetSessionToken in AWS CLI Command Reference를 참고해요.

PowerShell (Tools for PowerShell V4)

Example 1: 일정 기간 유효한 임시 자격 증명이 포함된 Amazon.RuntimeAWSCredentials 인스턴스를 반환해요. 임시 자격 증명을 요청하는 데 사용된 자격 증명은 현재 셸 기본값에서 유추돼요. 다른 자격 증명을 지정하려면 -ProfileName 또는 -AccessKey/-SecretKey 매개변수를 사용해요.

Get-STSSessionToken

출력:

AccessKeyId            Expiration            SecretAccessKey     SessionToken
-----------            ----------            ---------------     ------------
EXAMPLEACCESSKEYID     2/16/2015 9:12:28 PM  examplesecretaccesskey... SamPleTokeN.....

Example 2: 1시간 동안 유효한 임시 자격 증명이 포함된 Amazon.RuntimeAWSCredentials 인스턴스를 반환해요. 요청을 만드는 데 사용된 자격 증명은 지정된 프로필에서 얻어와요.

Get-STSSessionToken -DurationInSeconds 3600 -ProfileName myprofile

출력:

AccessKeyId            Expiration            SecretAccessKey     SessionToken
-----------            ----------            ---------------     ------------
EXAMPLEACCESSKEYID     2/16/2015 9:12:28 PM  examplesecretaccesskey... SamPleTokeN.....

Example 3: 프로필 myprofilename에 지정된 자격 증명을 가진 계정과 연결된 MFA 장치의 식별 번호와 그 장치가 제공한 값을 사용해 1시간 동안 유효한 임시 자격 증명이 포함된 Amazon.RuntimeAWSCredentials 인스턴스를 반환해요.

Get-STSSessionToken -DurationInSeconds 3600 -ProfileName myprofile -SerialNumber YourMFADeviceSerialNumber -TokenCode 123456

출력:

AccessKeyId            Expiration            SecretAccessKey     SessionToken
-----------            ----------            ---------------     ------------
EXAMPLEACCESSKEYID     2/16/2015 9:12:28 PM  examplesecretaccesskey... SamPleTokeN.....

API 상세는 GetSessionToken in AWS Tools for PowerShell Cmdlet Reference (V4)를 참고해요.

PowerShell (Tools for PowerShell V5)

Example 1: 일정 기간 유효한 임시 자격 증명이 포함된 Amazon.RuntimeAWSCredentials 인스턴스를 반환해요.

Get-STSSessionToken

출력:

AccessKeyId            Expiration            SecretAccessKey     SessionToken
-----------            ----------            ---------------     ------------
EXAMPLEACCESSKEYID     2/16/2015 9:12:28 PM  examplesecretaccesskey... SamPleTokeN.....

Example 2: 지정된 프로필에서 얻은 자격 증명으로 1시간 동안 유효한 임시 자격 증명을 반환해요.

Get-STSSessionToken -DurationInSeconds 3600 -ProfileName myprofile

Example 3: 프로필 myprofilename에 지정된 자격 증명을 가진 계정과 연결된 MFA 장치의 식별 번호와 그 장치가 제공한 값을 사용해 1시간 동안 유효한 임시 자격 증명을 반환해요.

Get-STSSessionToken -DurationInSeconds 3600 -ProfileName myprofile -SerialNumber YourMFADeviceSerialNumber -TokenCode 123456

API 상세는 GetSessionToken in AWS Tools for PowerShell Cmdlet Reference (V5)를 참고해요.

Python (SDK for Python / Boto3)

Note GitHub에 더 많은 내용이 있어요. AWS Code Examples Repository에서 전체 예제와 설정·실행 방법을 확인할 수 있어요.

MFA 토큰을 전달해 세션 토큰을 얻고, 그 임시 자격 증명으로 계정의 Amazon S3 버킷을 나열해요.

def list_buckets_with_session_token_with_mfa(mfa_serial_number, mfa_totp, sts_client):
	"""
	Gets a session token with MFA credentials and uses the temporary session
	credentials to list Amazon S3 buckets.

	Requires an MFA device serial number and token.

	:param mfa_serial_number: The serial number of the MFA device. For a virtual MFA
	device, this is an Amazon Resource Name (ARN).
	:param mfa_totp: A time-based, one-time password issued by the MFA device.
	:param sts_client: A Boto3 STS instance that has permission to assume the role.
	"""
	if mfa_serial_number is not None:
		response = sts_client.get_session_token(
			SerialNumber=mfa_serial_number, TokenCode=mfa_totp
		)
	else:
		response = sts_client.get_session_token()
	temp_credentials = response["Credentials"]

	s3_resource = boto3.resource(
		"s3",
		aws_access_key_id=temp_credentials["AccessKeyId"],
		aws_secret_access_key=temp_credentials["SecretAccessKey"],
		aws_session_token=temp_credentials["SessionToken"],
	)

	print(f"Buckets for the account:")
	for bucket in s3_resource.buckets.all():
		print(bucket.name)

API 상세는 GetSessionToken in AWS SDK for Python (Boto3) API Reference를 참고해요.

더 알아보기 (Learn more)