

# 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)」を参照してください。