메뉴
Amazon Simple Storage Service
개발자 안내서 (API Version 2006-03-01)

IAM 사용자 임시 자격 증명을 사용하여 요청 - .NET용 AWS SDK

IAM 사용자 또는 AWS 계정은 .NET용 AWS SDK을 사용하여 임시 보안 자격 증명을 요청(요청 만들기 참조)한 후 이 자격 증명을 사용하여 Amazon S3에 액세스할 수 있습니다. 세션의 유효 기간이 만료된 후 이 자격 증명도 만료됩니다. 세션은 기본적으로 1시간 동안 지속됩니다. IAM 사용자의 자격 증명을 사용할 경우 임시 보안 자격 증명을 요청할 때 1시간 ~ 36시간의 유효 기간을 지정할 수 있습니다.

IAM 사용자 임시 보안 자격 증명을 사용하여 요청하기

1

AmazonSecurityTokenServiceClient AWS Security Token Service 클라이언트의 인스턴스를 만듭니다. 자격 증명 제공에 대한 자세한 내용은 AWS SDK 및 Explorer 사용 단원을 참조하십시오.

2

앞 단계에서 생성한 STS 클라이언트의 GetSessionToken 메서드를 호출하여 세션을 시작합니다. GetSessionTokenRequest 객체를 사용하여 이 메서드에 세션 정보를 제공합니다.

메서드는 임시 보안 자격 증명을 반환합니다.

3

SessionAWSCredentials 객체의 인스턴스에 임시 보안 자격 증명을 패키징합니다. 이 객체를 사용하여 Amazon S3 클라이언트에 임시 보안 자격 증명을 제공합니다.

4

임시 보안 자격 증명을 전달하여 AmazonS3Client 클래스의 인스턴스를 만듭니다.

이 클라이언트를 사용하여 Amazon S3에 요청을 보냅니다. 만료된 자격 증명을 사용하여 요청을 보낼 경우 Amazon S3에서 오류를 반환합니다.

다음은 위에서 설명한 작업을 실행하는 C# 코드 예제입니다.

Copy
// In real applications, the following code is part of your trusted code. It has // your security credentials you use to obtain temporary security credentials. AmazonSecurityTokenServiceConfig config = new AmazonSecurityTokenServiceConfig(); AmazonSecurityTokenServiceClient stsClient = new AmazonSecurityTokenServiceClient(config); GetSessionTokenRequest getSessionTokenRequest = new GetSessionTokenRequest(); // Following duration can be set only if temporary credentials are requested by an IAM user. getSessionTokenRequest.DurationSeconds = 7200; // seconds. Credentials credentials = stsClient.GetSessionToken(getSessionTokenRequest).GetSessionTokenResult.Credentials; SessionAWSCredentials sessionCredentials = new SessionAWSCredentials(credentials.AccessKeyId, credentials.SecretAccessKey, credentials.SessionToken); // The following will be part of your less trusted code. You provide temporary security // credentials so it can send authenticated requests to Amazon S3. // Create Amazon S3 client by passing in the basicSessionCredentials object. AmazonS3Client s3Client = new AmazonS3Client(sessionCredentials); // Test. For example, send request to list object key in a bucket. var response = s3Client.ListObjects(bucketName);

참고

AWS 계정 보안 자격 증명을 사용하여 구한 임시 보안 자격 증명의 유효 기간은 1시간입니다. IAM 사용자 자격 증명을 사용하여 세션을 요청할 경우에만 세션 기간을 지정할 수 있습니다.

다음 C# 코드 예제는 지정된 버킷의 객체 키를 나열합니다. 이 코드 예제에서는 기본 1시간의 세션에 대한 임시 보안 자격 증명을 구한 다음 이 자격 증명을 사용하여 Amazon S3에 인증된 요청을 보냅니다.

IAM 사용자 자격 증명을 사용하여 샘플을 테스트하려면 AWS 계정에서 IAM 사용자를 생성해야 합니다. IAM 사용자를 만드는 방법에 대한 자세한 내용은 IAM 시작 안내서Set Up a Group, Grant Permissions, and Add Users를 참조하십시오.

실제 예제를 작성하여 테스트하는 방법에 대한 자세한 내용은 .NET 코드 예제 테스트를 참조하십시오.

Copy
using System; using System.Configuration; using System.Collections.Specialized; using Amazon.S3; using Amazon.SecurityToken; using Amazon.SecurityToken.Model; using Amazon.Runtime; using Amazon.S3.Model; using System.Collections.Generic; namespace s3.amazon.com.docsamples { class TempCredExplicitSessionStart { static string bucketName = "*** Provide bucket name ***"; static IAmazonS3 client; public static void Main(string[] args) { NameValueCollection appConfig = ConfigurationManager.AppSettings; string accessKeyID = appConfig["AWSAccessKey"]; string secretAccessKeyID = appConfig["AWSSecretKey"]; try { Console.WriteLine("Listing objects stored in a bucket"); SessionAWSCredentials tempCredentials = GetTemporaryCredentials(accessKeyID, secretAccessKeyID); // Create client by providing temporary security credentials. using (client = new AmazonS3Client(tempCredentials, Amazon.RegionEndpoint.USEast1)) { ListObjectsRequest listObjectRequest = new ListObjectsRequest(); listObjectRequest.BucketName = bucketName; // Send request to Amazon S3. ListObjectsResponse response = client.ListObjects(listObjectRequest); List<S3Object> objects = response.S3Objects; Console.WriteLine("Object count = {0}", objects.Count); Console.WriteLine("Press any key to continue..."); Console.ReadKey(); } } catch (AmazonS3Exception s3Exception) { Console.WriteLine(s3Exception.Message, s3Exception.InnerException); } catch (AmazonSecurityTokenServiceException stsException) { Console.WriteLine(stsException.Message, stsException.InnerException); } } private static SessionAWSCredentials GetTemporaryCredentials( string accessKeyId, string secretAccessKeyId) { AmazonSecurityTokenServiceClient stsClient = new AmazonSecurityTokenServiceClient(accessKeyId, secretAccessKeyId); GetSessionTokenRequest getSessionTokenRequest = new GetSessionTokenRequest(); getSessionTokenRequest.DurationSeconds = 7200; // seconds GetSessionTokenResponse sessionTokenResponse = stsClient.GetSessionToken(getSessionTokenRequest); Credentials credentials = sessionTokenResponse.Credentials; SessionAWSCredentials sessionCredentials = new SessionAWSCredentials(credentials.AccessKeyId, credentials.SecretAccessKey, credentials.SessionToken); return sessionCredentials; } } }

관련 리소스

이 페이지에서: