

 AWS SDK for .NET V3 がメンテナンスモードになりました。

[AWS SDK for .NET V4](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/welcome.html) に移行することをお勧めします。移行方法の詳細と情報については、[メンテナンスモードのお知らせ](https://aws.amazon.com/blogs/developer/aws-sdk-for-net-v3-maintenance-mode-announcement/)を参照してください。

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

# レガシー認証情報の使用
<a name="net-dg-legacy-creds"></a>

このセクションのトピックでは、 AWS IAM アイデンティティセンターを使用せずに長期または短期認証情報を使用する方法について説明します。

**警告**  
セキュリティリスクを避けるため、専用ソフトウェアを開発するときや実際のデータを扱うときは、IAM ユーザーを認証に使用しないでください。代わりに、[AWS IAM アイデンティティセンター](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html) などの ID プロバイダーとのフェデレーションを使用してください。

**注記**  
このトピックの情報は、短期または長期認証情報を手動で取得および管理する必要がある場合を対象としています。短期認証情報と長期認証情報に関する追加情報については、「*AWS SDK およびツールリファレンスガイド*」の「[その他の認証方法](https://docs.aws.amazon.com/sdkref/latest/guide/access-users.html)」を参照してください。  
セキュリティのベストプラクティスについては、 AWS IAM アイデンティティセンター「」の説明に従って を使用します[SDK 認証の設定](creds-idc.md)。

## 認証情報に関する重要な警告とガイダンス
<a name="net-dg-config-creds-warnings-and-guidelines"></a>

**認証情報に関する警告**
+ アカウントのルート認証情報を使用して AWS リソースにアクセス***しないでください***。これらの認証情報は無制限のアカウントアクセスを提供し、取り消すのが困難です。
+ アプリケーションファイルにリテラルアクセスキーや認証情報を***配置しないでください***。これを行うと、パブリックリポジトリにプロジェクトをアップロードするなど、誤って認証情報が公開されるリスクが発生します。
+ プロジェクト領域に認証情報を含むファイルを***含めないでください***。
+ 共有 AWS `credentials`ファイルに保存されている認証情報はすべてプレーンテキストで保存されることに注意してください。

**認証情報を安全に管理するための追加のガイダンス**

 AWS 認証情報を安全に管理する方法の一般的な説明については、「」の[AWS 「セキュリティ認証情報](https://docs.aws.amazon.com/general/latest/gr/Welcome.html#aws-security-credentials)[AWS 全般のリファレンス](https://docs.aws.amazon.com/general/latest/gr/)」および[「IAM ユーザーガイド](https://docs.aws.amazon.com/IAM/latest/UserGuide/)」の[「セキュリティのベストプラクティスとユースケース](https://docs.aws.amazon.com/IAM/latest/UserGuide/IAMBestPracticesAndUseCases.html)」を参照してください。これらの説明に加えて、以下の点を考慮してください。
+ IAM Identity Center のユーザーなど、追加ユーザーを作成し、 AWS ルートユーザー認証情報を使用する代わりにそのユーザー認証情報を使用します。他のユーザーの認証情報は、必要に応じて取り消すこともできますが、本質的に一時的なものです。さらに、各ユーザーに対して、特定のリソースとアクションにアクセスするためのポリシーを適用できます。これにより、最小特権のアクセス許可になります。
+ Amazon Elastic Container Service (Amazon ECS) タスクで、[タスク用の IAM ロール](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html)を使用します。
+ Amazon EC2 インスタンスで実行中のアプリケーションに対して、[IAM ロール](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)を使用します。
+ 組織外部のユーザーが利用できるアプリケーションでは、[一時的な認証情報](creds-assign.md#net-dg-config-creds-assign-role)または環境変数を使用します。

**Topics**
+ [認証情報に関する重要な警告とガイダンス](#net-dg-config-creds-warnings-and-guidelines)
+ [共有 AWS 認証情報ファイルの使用](creds-file.md)
+ [SDK ストアの使用 (Windows のみ)](sdk-store.md)

# 共有 AWS 認証情報ファイルの使用
<a name="creds-file"></a>

([認証情報に関する重要な警告とガイダンス](net-dg-legacy-creds.md#net-dg-config-creds-warnings-and-guidelines)を必ずご確認ください)

アプリケーションに認証情報を提供する方法の 1 つは、*共有 AWS 認証情報ファイル*にプロファイルを作成し、そのプロファイルに認証情報を保存することです。このファイルは、他の AWS SDKsで使用できます。また、、[AWS Tools for Windows PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/)、および [Visual Studio](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/)[AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/)、[JetBrains](https://docs.aws.amazon.com/toolkit-for-jetbrains/latest/userguide/)、[VS Code](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/) の AWS ツールキットでも使用できます。

**警告**  
セキュリティリスクを避けるため、専用ソフトウェアを開発するときや実際のデータを扱うときは、IAM ユーザーを認証に使用しないでください。代わりに、[AWS IAM アイデンティティセンター](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html) などの ID プロバイダーとのフェデレーションを使用してください。

**注記**  
このトピックの情報は、短期または長期認証情報を手動で取得および管理する必要がある場合を対象としています。短期認証情報と長期認証情報に関する追加情報については、「*AWS SDK およびツールリファレンスガイド*」の「[その他の認証方法](https://docs.aws.amazon.com/sdkref/latest/guide/access-users.html)」を参照してください。  
セキュリティのベストプラクティスについては、 AWS IAM アイデンティティセンター「」の説明に従って を使用します[SDK 認証の設定](creds-idc.md)。

## 一般的な情報
<a name="creds-file-general-info"></a>

デフォルトでは、共有 AWS 認証情報ファイルはホーム`.aws`ディレクトリ内の ディレクトリにあり`credentials`、 (Linux または macOS) または `~/.aws/credentials` (`%USERPROFILE%\.aws\credentials`Windows) という名前が付けられます。別の保存場所に関する詳細については、*[AWS SDK とツールのリファレンスガイド](https://docs.aws.amazon.com/sdkref/latest/guide/overview.html)*の「[共有ファイルの場所](https://docs.aws.amazon.com/sdkref/latest/guide/file-location.html)」を参照してください。また、「[アプリケーションでの認証情報とプロファイルへのアクセス](creds-locate.md)」も参照してください。

共有 AWS 認証情報ファイルはプレーンテキストファイルであり、特定の形式に従います。 AWS 認証情報ファイルの形式については、 SDK およびツールリファレンスガイドの[「認証情報ファイルの形式](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html#file-format-creds)」を参照してください。 *AWS SDKs *

共有 AWS 認証情報ファイルのプロファイルは、いくつかの方法で管理できます。
+ 任意のテキストエディタを使用して、共有 AWS 認証情報ファイルを作成および更新します。
+ このトピックで後述するように、 AWS SDK for .NET API の [Amazon.Runtime.CredentialManagement](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/NRuntimeCredentialManagement.html) 名前空間を使用します。
+ および [Visual Studio](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/credentials.html)、[JetBrains](https://docs.aws.amazon.com/toolkit-for-jetbrains/latest/userguide/setup-credentials.html)、VS Code の[AWS Tools for PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/specifying-your-aws-credentials.html) AWS ツールキットのコマンドと手順を使用します。 [https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/setup-credentials.html](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/setup-credentials.html)
+ [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) コマンドを使用します (例えば `aws configure set aws_access_key_id` および `aws configure set aws_secret_access_key`)。

## プロファイル管理の例
<a name="creds-file-examples"></a>

以下のセクションでは、共有 AWS 認証情報ファイルのプロファイルの例を示します。いくつかの例では、前述の認証情報管理方法のいずれかを使用して取得できる結果が示されています。その他の例では、特定のメソッドの使用方法を示しています。

### デフォルトのプロファイル
<a name="creds-file-default"></a>

共有 AWS 認証情報ファイルには、ほとんどの場合、*default* という名前のプロファイルがあります。これは、他のプロファイルが定義されていない場合に が認証情報 AWS SDK for .NET を検索する場所です。

`[default]` プロファイルは通常、以下のようになっています。

```
[default]
aws_access_key_id = AKIAIOSFODNN7EXAMPLE
aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
```

### プログラムでのプロファイルの作成
<a name="creds-file-create-programmatically"></a>

この例では、プロファイルを作成し、それをプログラムで共有 AWS 認証情報ファイルに保存する方法を示します。[Amazon.Runtime.CredentialManagement](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/NRuntimeCredentialManagement.html) 名前空間の次のクラスを使用します: [CredentialProfileOptions](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TCredentialProfileOptions.html)、[CredentialProfile](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TCredentialProfile.html)、[SharedCredentialsFile](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TSharedCredentialsFile.html)。

```
using Amazon.Runtime.CredentialManagement;
...

// Do not include credentials in your code.
WriteProfile("my_new_profile", SecurelyStoredKeyID, SecurelyStoredSecretAccessKey);
...

void WriteProfile(string profileName, string keyId, string secret)
{
    Console.WriteLine($"Create the [{profileName}] profile...");
    var options = new CredentialProfileOptions
    {
        AccessKey = keyId,
        SecretKey = secret
    };
    var profile = new CredentialProfile(profileName, options);
    var sharedFile = new SharedCredentialsFile();
    sharedFile.RegisterProfile(profile);
}
```

**警告**  
このようなコードは、通常、アプリケーションに含めるべきではありません。アプリケーションに組み込む場合は、プレーンテキストキーがコード内、ネットワーク経由、またはコンピュータのメモリ内で見えないように適切な予防措置を講じてください。

この例で作成されたプロファイルを以下に示します。

```
[my_new_profile]
aws_access_key_id=AKIAIOSFODNN7EXAMPLE
aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
```

### 既存のプロファイルのプログラムでの更新
<a name="creds-file-update-programmatically"></a>

この例では、前の手順で作成したプロファイルをプログラムで更新する方法を示します。[Amazon.Runtime.CredentialManagement](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/NRuntimeCredentialManagement.html) 名前空間の次のクラスを使用します: [CredentialProfile](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TCredentialProfile.html)、[SharedCredentialsFile](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TSharedCredentialsFile.html)。また、[Amazon](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Amazon/N.html) 名前空間の [RegionEndpoint](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Amazon/TRegionEndpoint.html) クラスも使用します。

```
using Amazon.Runtime.CredentialManagement;
...

AddRegion("my_new_profile", RegionEndpoint.USWest2);
...

void AddRegion(string profileName, RegionEndpoint region)
{
    var sharedFile = new SharedCredentialsFile();
    CredentialProfile profile;
    if (sharedFile.TryGetProfile(profileName, out profile))
    {
        profile.Region = region;
        sharedFile.RegisterProfile(profile);
    }
}
```

更新されたプロファイルを以下に示します。

```
[my_new_profile]
aws_access_key_id=AKIAIOSFODNN7EXAMPLE
aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
region=us-west-2
```

**注記**  
 AWS リージョンは、他の場所や他の方法を使用して設定することもできます。詳細については、「[AWS リージョンを設定する](net-dg-region-selection.md)」を参照してください。

# SDK ストアの使用 (Windows のみ)
<a name="sdk-store"></a>

([重要な警告とガイドライン](net-dg-legacy-creds.md#net-dg-config-creds-warnings-and-guidelines)を必ずご確認ください)

Windows では、*SDK ストア*は AWS SDK for .NET 、アプリケーションのプロファイルを作成し、暗号化された認証情報を保存するもう 1 つの場所です。`%USERPROFILE%\AppData\Local\AWSToolkit\RegisteredAccounts.json` にあります。開発時に、[共有 AWS 認証情報ファイル](creds-file.md)の代わりとして SDK ストアを使用できます。

**警告**  
セキュリティリスクを避けるため、専用ソフトウェアを開発するときや実際のデータを扱うときは、IAM ユーザーを認証に使用しないでください。代わりに、[AWS IAM アイデンティティセンター](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html) などの ID プロバイダーとのフェデレーションを使用してください。

**注記**  
このトピックの情報は、短期または長期認証情報を手動で取得および管理する必要がある場合を対象としています。短期認証情報と長期認証情報に関する追加情報については、「*AWS SDK およびツールリファレンスガイド*」の「[その他の認証方法](https://docs.aws.amazon.com/sdkref/latest/guide/access-users.html)」を参照してください。  
セキュリティのベストプラクティスについては、 AWS IAM アイデンティティセンター「」の説明に従って を使用します[SDK 認証の設定](creds-idc.md)。

## 一般的な情報
<a name="sdk-store-general-info"></a>

SDK ストアには次の利点があります。
+ SDK ストア内の認証情報が暗号化された状態で、ユーザーのホームディレクトリに SDK ストアが配置されます。これにより、認証情報が誤って公開されるリスクが制限されます。
+ SDK ストアは、[AWS Tools for Windows PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/) および [AWS Toolkit for Visual Studio](https://docs.aws.amazon.com/AWSToolkitVS/latest/UserGuide/) にも認証情報を提供します。

SDK ストアのプロファイルは、特定のホスト上の特定ユーザーに固有です。これらは他のホストや他のユーザーにコピーすることはできません。そのため、開発用マシンの SDK ストアにあるプロファイルを、他のホストや他のデベロッパーのマシンで再利用することはできません。また、本番稼働用のアプリケーションで SDK ストアのプロファイルを使用できないということでもあります。

SDK ストアのプロファイルは、以下に示すいくつかの方法で管理できます。
+ [AWS Toolkit for Visual Studio](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/credentials.html) のグラフィカルユーザーインターフェイス (GUI) を使用します。
+ このトピックで後述するように、 AWS SDK for .NET API の [Amazon.Runtime.CredentialManagement](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/NRuntimeCredentialManagement.html) 名前空間を使用します。
+ [AWS Tools for Windows PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/specifying-your-aws-credentials.html) のコマンドを使用します (例えば `Set-AWSCredential` および `Remove-AWSCredentialProfile`)。

## プロファイル管理の例
<a name="sdk-store-examples"></a>

以下の例では、プログラムで SDK ストア内にプロファイルを作成して更新する方法を示します。

### プログラムでのプロファイルの作成
<a name="sdk-store-create-programmatically"></a>

この例では、プログラムを使用してプロファイルを作成し、SDK ストアに保存する方法を説明します。[Amazon.Runtime.CredentialManagement](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/NRuntimeCredentialManagement.html) 名前空間の次のクラスを使用します: [CredentialProfileOptions](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TCredentialProfileOptions.html)、[CredentialProfile](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TCredentialProfile.html)、[NetSDKCredentialsFile](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TNetSDKCredentialsFile.html)。

```
using Amazon.Runtime.CredentialManagement;
...

// Do not include credentials in your code.
WriteProfile("my_new_profile", SecurelyStoredKeyID, SecurelyStoredSecretAccessKey);
...

void WriteProfile(string profileName, string keyId, string secret)
{
    Console.WriteLine($"Create the [{profileName}] profile...");
    var options = new CredentialProfileOptions
    {
        AccessKey = keyId,
        SecretKey = secret
    };
    var profile = new CredentialProfile(profileName, options);
    var netSdkStore = new NetSDKCredentialsFile();
    netSdkStore.RegisterProfile(profile);
}
```

**警告**  
このようなコードは、通常、アプリケーションに含めるべきではありません。アプリケーションに含まれる場合は、プレーンテキストキーがコード内、ネットワーク経由、またはコンピュータのメモリ内で見えないように適切な予防措置を講じてください。

この例で作成されたプロファイルを以下に示します。

```
"[generated GUID]" : {
    "AWSAccessKey" : "01000000D08...[etc., encrypted access key ID]",
    "AWSSecretKey" : "01000000D08...[etc., encrypted secret access key]",
    "ProfileType"  : "AWS",
    "DisplayName"  : "my_new_profile",
}
```

### 既存のプロファイルのプログラムでの更新
<a name="sdk-store-update-programmatically"></a>

この例では、前の手順で作成したプロファイルをプログラムで更新する方法を示します。[Amazon.Runtime.CredentialManagement](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/NRuntimeCredentialManagement.html) 名前空間の次のクラスを使用します: [CredentialProfile](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TCredentialProfile.html)、[NetSDKCredentialsFile](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TNetSDKCredentialsFile.html)。また、[Amazon](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Amazon/N.html) 名前空間の [RegionEndpoint](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Amazon/TRegionEndpoint.html) クラスも使用します。

```
using Amazon.Runtime.CredentialManagement;
...

AddRegion("my_new_profile", RegionEndpoint.USWest2);
...

void AddRegion(string profileName, RegionEndpoint region)
{
    var netSdkStore = new NetSDKCredentialsFile();
    CredentialProfile profile;
    if (netSdkStore.TryGetProfile(profileName, out profile))
    {
        profile.Region = region;
        netSdkStore.RegisterProfile(profile);
    }
}
```

更新されたプロファイルを以下に示します。

```
"[generated GUID]" : {
    "AWSAccessKey" : "01000000D08...[etc., encrypted access key ID]",
    "AWSSecretKey" : "01000000D08...[etc., encrypted secret access key]",
    "ProfileType"  : "AWS",
    "DisplayName"  : "my_new_profile",
    "Region"       : "us-west-2"
}
```

**注記**  
 AWS リージョンは、他の場所や他の方法を使用して設定することもできます。詳細については、「[AWS リージョンを設定する](net-dg-region-selection.md)」を参照してください。