

# AWS セキュリティ認証情報
<a name="security-creds"></a>

AWS とやり取りするときは、AWS*セキュリティ認証情報*を指定して、自分が誰であるか、およびリクエストするリソースにアクセスするアクセス許可があるかどうかを確認します。 AWS は、セキュリティ認証情報を使用してリクエストを認証および承認します。

たとえば、Amazon Simple Storage Service (Amazon S3) バケットから保護されたファイルをダウンロードする場合、認証情報はそのアクセスを許可する必要があります。認証情報にファイルをダウンロードする権限がないことが示される場合、AWS はリクエストを拒否します。ただし、公開されている Amazon S3 バケット内のファイルのダウンロードに AWS セキュリティ認証情報は必要ありません。

AWS にはさまざまなタイプのユーザーがあり、それぞれに独自のセキュリティ認証情報があります。
+ **アカウント所有者 (ルートユーザー）** — AWS アカウント を作成し、フルアクセス権限を持つユーザー。
+ **AWS IAM アイデンティティセンター ユーザー** — AWS IAM アイデンティティセンター で管理されるユーザー。
+ **フェデレーティッドプリンシパル** – フェデレーションを通じて AWS への一時的なアクセスが許可された外部 ID プロバイダーのユーザー。フェデレーション ID の詳細については、「[ID プロバイダーと AWS とのフェデレーション](id_roles_providers.md)」を参照してください。
+ **IAM ユーザー** — AWS Identity and Access Management (IAM) サービス内で作成された個々のユーザー。

ユーザーは長期または一時的なセキュリティ認証情報を持っています。ルートユーザー、IAM ユーザー、アクセスキーには、有効期限のない長期セキュリティ認証情報があります。認証情報を長期間保護するために、[アクセスキーの管理](id_credentials_access-keys.md)、[パスワードの変更](id_credentials_passwords.md)、[MFA の有効化](id_credentials_mfa.md)を行うためのプロセスを準備する必要があります。

AWS Organizations のメンバーアカウント間でルートユーザー認証情報の管理を簡素化するために、AWS Organizations を使用して管理される AWS アカウント のルートユーザー認証情報を一元的に保護できます。[メンバーアカウントのルートアクセスを一元管理](id_root-user.md#id_root-user-access-management) を使用すると、長期的なルートユーザー認証情報を一元的に削除して、そのリカバリを防止し、意図しないルートアクセスを大規模に防止できます。

IAM ロール、AWS IAM アイデンティティセンターのユーザー、AWS STS フェデレーションユーザーのプリンシパルは一時的なセキュリティ認証情報があります。一時的なセキュリティ認証情報は、定義された期間が経過するか、ユーザーがセッションを終了したときに期限切れになります。一時的認証情報の機能は、長期的な証情報とほとんど同じですが、次の相違点があります。
+ 一時的セキュリティ認証情報は、その名前が示すとおり、*使用期限が短く*なっています。有効期限は数分から数時間に設定できます。認証情報が失効すると、AWS はそれらを認識しなくなります。また、その認証情報によって作成された API リクエストによるあらゆるタイプのアクセスが許可されなくなります。
+ 一時的セキュリティ認証情報はユーザーとともに保存されることはなく、ユーザーのリクエストに応じて動的に生成され、提供されます。一時的セキュリティ認証情報が失効すると（または失効する前でも）、ユーザーは新しい認証情報をリクエストできます。ただし、リクエストするユーザーがまだその権限を持っている場合に限ります。

そのため、一時的な認証情報には、長期の認証情報よりも次の利点があります。
+ アプリケーションの長期の AWS セキュリティ認証情報を配布したり埋め込んだりする必要がありません。
+ ユーザーに対して AWS ID を定義せずに AWS リソースへのアクセスを許可できます。一時的認証情報は[ロールおよび ID フェデレーション](id_roles.md)の基本となります。
+ 一時的セキュリティ認証情報の有効期限は限られているので、認証情報が不要になった際に更新したり、明示的に取り消したりする必要がありません。一時的セキュリティ認証情報の有効期限が切れると、再利用することはできません。認証情報が有効な期間を、最大限度まで指定できます。

## セキュリティに関する考慮事項
<a name="security-considerations-ref"></a>

後でアクセスする場合は、以下AWS アカウント を考慮することをお勧めします。
+  AWS アカウント を作成すると、1 つのルートユーザーが作成されます。ルートユーザー (アカウント所有者) の認証情報によって、アカウント内のすべてのリソースへのフルアクセスが許可されます。ルートユーザーが最初に実行するタスクは、ルートユーザーの使用を最小限にするために、別のユーザーに AWS アカウント の管理権限を付与することです。
+ 多要素認証 (MFA) は、AWS アカウント にアクセスできるユーザーのセキュリティをさらに強化するサービスです。セキュリティを高めるため、AWS アカウントのルートユーザー 認証情報と、すべての IAM ユーザーに対して MFA を必須にすることが推奨されます。詳細については、「[IAM の AWS 多要素認証](id_credentials_mfa.md)」を参照してください。
+ AWS には、AWS へのアクセス方法とAWSユーザータイプに応じて異なる種類のセキュリティ認証情報が必要です。例えば、AWS マネジメントコンソール にはサインインの認証情報を使用し、プログラムで AWS を呼び出すにはアクセスキーを使用します。ユーザータイプとサインインページの決定については、「AWS サインイン ユーザーガイド」の「[AWS サインインとは](https://docs.aws.amazon.com/signin/latest/userguide/what-is-sign-in.html)」を参照してください。
+ IAM ポリシーを使用して、リソースへのルートユーザーアクセスを明示的に拒否することはできません。AWS Organizations [サービスコントロールポリシー](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_type-auth.html) (SCP) を使用できるのは、ルートユーザーの許可を制限する場合のみです。
+ ルートユーザーのパスワードを忘れたり、紛失したりした場合、このパスワードをリセットするには、アカウントに関連付けられている E メールアドレスにアクセスする必要があります。
+ ルートユーザーアクセスキーを紛失した場合は、アカウントにルートユーザーとしてサインインして、新しいアクセスキーを作成する必要があります。
+ ルートユーザーを日常的なタスクに使用しないでください。ルートユーザーのみが実行できるタスクを実行します。ルートユーザーとしてサインインする必要があるタスクの完全なリストについては、「[ルートユーザー認証情報が必要なタスク](id_root-user.md#root-user-tasks)」を参照してください。
+ 認証情報は、アカウントに固有です。複数の AWS アカウント にアクセスできる場合は、アカウントごとに別々の認証情報があります。
+ [ポリシー](access_policies.md)は、ユーザー、ロール、またはユーザーグループのメンバーが実行できるアクション、 AWS リソース、および条件を決定します。ポリシーで、AWS アカウント 内の AWS のサービス やリソースへのアクセスを安全に制御できます。後でアクセス許可の変更または取り消しが必要になったら、ID に直接変更する場合は、ポリシーを削除または変更できます。
+ *Emergency Access* IAM ユーザーのサインイン認証情報と、プログラムによるアクセス用に作成したアクセスキーは、必ず安全な場所に保存してください。アクセスキーを紛失した場合は、アカウントにサインインして新しいアクセスキーを作成する必要があります。
+ IAM ユーザーおよびアクセスキーによって提供される長期的な認証情報の代わりに、IAM ロールおよびフェデレーティッドプリンシパルによって提供される一時的な認証情報を使用することを強くお勧めします。

# AWS セキュリティ認証情報を使用してプログラムでアクセスする
<a name="security-creds-programmatic-access"></a>

AWS をプログラムで呼び出すか、AWS Command Line Interface または AWS Tools for PowerShell を使用する場合は、可能であれば短期的なアクセスキーの使用を推奨します。ただし、これらの目的で長期的な AWS アクセスキーを使用することもできます。

長期的なアクセスキーを作成するときは、アクセスキー ID (`AKIAIOSFODNN7EXAMPLE` など) とシークレットアクセスキー (`wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY` など) をセットとして作成します。シークレットアクセスキーは、作成時にのみダウンロードできます。シークレットアクセスキーをダウンロードしない場合や紛失した場合は、新しいシークレットアクセスキーを作成する必要があります。

多くの場合、期限のない長期のアクセスキーは必要ありません (IAM ユーザー用のアクセスキーを作成する場合など)。その代わり、IAM ロールを作成し、一時的なセキュリティ認証情報を生成できます。一時的なセキュリティ認証情報は、アクセスキー ID とシークレットアクセスキーが含まれていますが、認証情報がいつ無効になるかを示すセキュリティトークンも含まれています。有効期限が切れると、その後は有効にはなりません。詳細については、[長期的なアクセスキーに対する代替方法](#security-creds-alternatives-to-long-term-access-keys)を参照してください。

`AKIA` で始まるアクセスキー ID は、IAM ユーザーまたは AWS アカウントルートユーザーの長期的なアクセスキーです。`ASIA` で始まるアクセスキー ID は、AWS STS オペレーションを使用して作成される一時的な認証情報アクセスキーです。

AWS マネジメントコンソール の外部で AWS を操作するには、プログラマチックアクセス権が必要です。プログラムによるアクセス権を付与する方法は、AWS にアクセスしているユーザーのタイプによって異なります。

ユーザーにプログラムによるアクセス権を付与するには、以下のいずれかのオプションを選択します。


****  

| プログラムによるアクセス権を必要とするユーザー | 目的 | 方法 | 
| --- | --- | --- | 
| IAM | (推奨) 一時的な認証情報としてコンソール認証情報を使用して、AWS CLI、AWS SDK、または AWS API へのプログラマチックリクエストに署名します。 |  使用するインターフェイスの指示に従ってください。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/security-creds-programmatic-access.html)  | 
|  ワークフォースアイデンティティ (IAM アイデンティティセンターで管理されているユーザー)  | 一時的な認証情報を使用して、AWS CLI、AWS SDK、または AWS API へのプログラムによるリクエストに署名します。 |  使用するインターフェイスの指示に従ってください。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/security-creds-programmatic-access.html)  | 
| IAM | 一時的な認証情報を使用して、AWS CLI、AWS SDK、または AWS API へのプログラムによるリクエストに署名します。 | IAM ユーザーガイドの「[AWS リソースでの一時的な認証情報の使用](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html)」の指示に従ってください。 | 
| IAM | (非推奨)長期的な認証情報を使用して、AWS CLI、AWS SDK、または AWS API へのプログラムによるリクエストに署名します。 |  使用するインターフェイスの指示に従ってください。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/security-creds-programmatic-access.html)  | 

## 長期的なアクセスキーに対する代替方法
<a name="security-creds-alternatives-to-long-term-access-keys"></a>

多くの一般的なユースケースでは長期的なアクセスキーの代替方法があります。アカウントのセキュリティを強化するには、以下を検討してください。
+ **長期的なアクセスキーやシークレットアクセスキーをアプリケーションコードやコードリポジトリに埋め込まないでください。**代わりに AWS Secrets Manager またはその他のシークレット管理ソリューションを使用して、プレーンテキストでキーをハードコードする必要をなくします。アプリケーションまたはクライアントは必要に応じてシークレットを取得できます。詳細については、「*AWS Secrets Manager ユーザーガイド*」の「[What is AWS Secrets Manager?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)」を参照してください。
+ **可能な場合には必ず IAM ロールを使用して一時的なセキュリティ認証情報を生成してください。**可能な場合には、長期的なアクセスキーではなく、常に一時的なセキュリティ認証情報を発行するメカニズムを使用してください。一時的セキュリティ認証情報は、ユーザーとともに保存されることはなく、ユーザーのリクエストに応じて動的に生成され、提供されるため、より安全です。一時的セキュリティ認証情報は有効期間が限られているため、それらを管理したり更新したりする必要はありません。一時的なアクセスキーを提供するメカニズムには、IAM ロールや IAM Identity Center ユーザーの認証が含まれます。AWS の外部で実行されるマシンには、[AWS Identity and Access Management Roles Anywhere](https://docs.aws.amazon.com/rolesanywhere/latest/userguide/introduction.html).を使用できます。
+ **AWS Command Line Interface (AWS CLI) または `aws-shell` の長期的なアクセスキーの代替方法を使用します。**代替方法には以下が含まれます。
  + **コンソール認証情報を使用して AWS ローカル開発にログインする**。AWS CLI バージョン 2 と `aws login` コマンドを使用して短期認証情報を生成し、コンソール認証情報を使用して AWS CLI コマンドを実行できます。詳細については、「*AWS Command Line Interfaceユーザーガイド*」の「[AWS ローカル開発用のログイン](https://docs.aws.amazon.com//cli/latest/userguide/cli-authentication-user.html)」を参照してください。
  + **AWS CloudShell** はブラウザーベースの事前認証済みシェルで、AWS マネジメントコンソール から直接起動できます。任意のシェル (Bash、PowerShell、または Z シェル) を使用して、AWS のサービス に対して AWS CLI コマンドを実行できます。この手順を実行すると、コマンドラインツールのダウンロードもインストールも不要です。詳細については、「*AWS CloudShell ユーザーガイド*」の「[What is AWS CloudShell?](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html)」を参照してください。
+ **アプリケーションまたは AWS のサービス にアクセスする必要があるユーザー向けに長期的なアクセスキーを作成しないでください。**IAM Identity Center は、AWS のサービス にアクセスする外部 IdP ユーザーに一時的なアクセス認証情報を生成できます。これにより、IAM で長期的な認証情報を作成して管理する必要がなくなります。IAM Identity Center で、外部 IdP ユーザーにアクセス権を付与する IAM Identity Center のアクセス権限セットを作成します。次に、IAM Identity Center のグループを、選択した AWS アカウント のアクセス権限セットに割り当てます。詳細については、AWS IAM アイデンティティセンター ユーザーガイドの「[AWS IAM アイデンティティセンター とは](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)」、「[外部の ID プロバイダーとの接続](https://docs.aws.amazon.com/singlesignon/latest/userguide/manage-your-identity-source-idp.html)」、および「[アクセス権限セット](https://docs.aws.amazon.com/singlesignon/latest/userguide/permissionsetsconcept.html)」を参照してください。
+ **長期的なアクセスキーを AWS コンピューティングサービス内に保存しないでください。**代わりに、コンピューティングリソースに IAM ロールを割り当ててください。これにより、アクセス権を付与する一時的な認証情報が自動的に提供されます。例えば、Amazon EC2 インスタンスにアタッチされるインスタンスプロファイルを作成すると、AWS ロールをインスタンスに割り当て、そのアプリケーションのすべてで使用できるようになります。インスタンスプロファイルにはロールが含まれ、Amazon EC2 インスタンスで実行されるプログラムは一時的な認証情報を取得することができます。詳細については、「[Amazon EC2 インスタンスで実行されるアプリケーションに IAM ロールを使用してアクセス許可を付与する](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2.html)」を参照してください。