認証情報とプロファイルの解決 - AWS SDK for .NET (V4)

のバージョン 4 (V4) AWS SDK for .NET がリリースされました。

重要な変更とアプリケーションの移行については、「移行トピック」を参照してください。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

認証情報とプロファイルの解決

は特定の順序で認証情報 AWS SDK for .NET を検索し、現在のアプリケーションで使用可能な最初のセットを使用します。

認証情報の検索順序
  1. 「」で説明されているように、 AWS サービスクライアントで明示的に設定される認証情報アプリケーションでの認証情報とプロファイルへのアクセス

    注記

    このトピックは推奨される認証情報の指定方法ではないため、特別な考慮事項 セクションに記載されています。

  2. 3 つの変数すべてに値がある場合AWS_ACCESS_KEY_ID、、AWS_SECRET_ACCESS_KEY、および AWS_SESSION_TOKEN環境変数から作成される SessionAWSCredentials

  3. 両方の変数に値がある場合、 AWS_ACCESS_KEY_IDおよび AWS_SECRET_ACCESS_KEY環境変数から作成される BasicAWSCredentials

  4. 両方の変数に値がある場合、 AWS_WEB_IDENTITY_TOKEN_FILEおよび AWS_ROLE_ARN環境変数から作成される AssumeRoleWithWebIdentityCredentials

  5. AWSConfigs.AWSProfileName の値で指定された名前を持つ認証情報プロファイル。

  6. AWS_PROFILE 環境変数で指定された名前を持つ認証情報プロファイル。

  7. [default] 認証情報プロファイル。

  8. コンテナ認証情報プロバイダー

  9. Amazon EC2 インスタンスメタデータ。

アプリケーションが本番環境などの Amazon EC2 インスタンスで実行されている場合は、「IAM ロールを使用したアクセス権の付与」の説明に従って IAM ロールを使用します。プレリリーステストなど、それ以外の場合は、ウェブアプリケーションがサーバー上でアクセスできる認証情報ファイル形式を使用するファイルに AWS 認証情報を保存します。

環境変数と認証情報プロファイルの詳細については、AWS SDKs」の次のトピックを参照してください。環境変数環境変数リスト共有設定ファイルと認証情報ファイル

プロファイルの解決

認証情報の 2 つの異なるストレージメカニズムでは、それらを使用する AWS SDK for .NET ように を設定する方法を理解することが重要です。AWSConfigs.AWSProfilesLocation プロパティは、 が認証情報プロファイル AWS SDK for .NET を検索する方法を制御します。

AWSProfilesLocation プロファイルの解決動作

null (未設定) または空

プラットフォームでサポートされていれば SDK ストアを検索し、次にデフォルトの場所にある共有 AWS 認証情報ファイルを検索します。プロファイルがいずれの場所にもない場合は、~/.aws/config (Linux または macOS) または %USERPROFILE%\.aws\config (Windows) を検索します。

AWS 認証情報ファイル形式のファイルへのパス

指定されたファイルのみを対象に、指定された名前のプロファイルを検索します。

フェデレーティッドユーザーアカウントの認証情報の使用

AWS SDK for .NET (AWSSDK.Core バージョン 3.1.6.0 以降) を使用するアプリケーションは、Active Directory フェデレーションサービス (AD FS) を介してフェデレーティッドユーザーアカウントを使用して、Security Assertion Markup Language (SAML) を使用して AWS サービスにアクセスできます。

フェデレーティッドアクセスサポートでは、ユーザーは Active Directory を使用して認証できます。一時的な認証情報は、自動的にユーザーに許可されます。これらの一時的な認証情報は 1 時間有効で、アプリケーションが AWS サービスを呼び出すときに使用されます。一時的な認証情報の管理は SDK によって処理します。ドメイン結合されたユーザーアカウントでは、アプリケーションが呼び出しを行ったときに資格情報の有効期限が切れている場合に、そのユーザーは自動的に再認証され、新しい認証情報が付与されます (ドメインに参加していないアカウントの場合、ユーザーは再認証の前に認証情報を入力するように求められます)。

このサポートを .NET アプリケーションで使用するには、まず PowerShell コマンドレットを使用してロールプロファイルをセットアップする必要があります。方法については、AWS Tools for Windows PowerShell のドキュメントを参照してください。

ロールプロファイルを設定したら、アプリケーションでプロファイルを参照します。そのための方法はいくつかありますが、その 1 つとして AWSConfigs.AWSProfileName プロパティを他の認証情報プロファイルと同じように設定する方法があります。

AWS Security Token Service アセンブリ (AWSSDK.SecurityToken) は、 AWS 認証情報を取得するための SAML サポートを提供します。フェデレーティッドユーザーアカウントの認証情報を使用するには、アプリケーションでこのアセンブリが使用できることを確認してください。

ロールまたは一時認証情報の指定

Amazon EC2 インスタンスで実行されるアプリケーションの場合、認証情報を管理する最も安全な方法は、「IAM ロールを使用したアクセス権の付与」での説明に従って IAM ロールを使用することです。

組織外部のユーザーに対してソフトウェア実行可能ファイルが利用可能になるアプリケーションシナリオでは、一時的なセキュリティ認証情報を使用するようにソフトウェアを設計することをお勧めします。 AWS リソースへのアクセスを制限するだけでなく、これらの認証情報は指定された期間後に期限切れになるという利点があります。一時的なセキュリティ認証情報の使用方法の詳細については、以下を参照してください。

プロキシ認証情報の使用

ソフトウェアがプロキシ AWS を介して と通信する場合は、サービスの Configクラスの ProxyCredentialsプロパティを使用して、プロキシの認証情報を指定できます。サービスの Config クラスは通常、サービスのプライマリ名前空間の一部です。例として、Amazon.CloudDirectory 名前空間の AmazonCloudDirectoryConfigAmazon.GameLift 名前空間の AmazonGameLiftConfig などがあります。

たとえば、Amazon S3 の場合は、次のようなコードを使用できます。SecurelyStoredUserNameSecurelyStoredPassword は、NetworkCredential オブジェクトで指定されたプロキシ ユーザー名とパスワードです。

AmazonS3Config config = new AmazonS3Config(); config.ProxyCredentials = new NetworkCredential(SecurelyStoredUserName, SecurelyStoredPassword);
注記

SDK の以前のバージョンでは ProxyUsername および ProxyPassword が使用されていましたが、これらのプロパティは非推奨になりました。