メニュー
Amazon Simple Storage Service
開発者ガイド (API Version 2006-03-01)

IAM ユーザーの一時的な認証情報を使用したリクエストの実行 – AWS SDK for .NET

IAM ユーザーまたは AWS アカウントは、AWS SDK for .NET を使用して一時的なセキュリティ認証情報をリクエストし(「リクエストの実行」を参照)、その認証情報を使用して、Amazon S3 にアクセスできます。これらの認証情報は、セッションの有効期間が過ぎると失効します。デフォルトでは、セッションの有効期間は 1 時間です。IAM ユーザーの認証情報を使用する場合、一時的なセキュリティ認証情報をリクエストするときに、有効期間を 1 ~ 36 時間の間で指定できます。

IAM ユーザーの一時的なセキュリティ認証情報を使用したリクエストの実行

1

AWS Security Token Service クライアント AmazonSecurityTokenServiceClient のインスタンスを作成します。認証情報の指定の詳細については、「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; } } }

関連リソース

このページの内容: