

# SEC02-BP02 一時的な認証情報を使用する
<a name="sec_identities_unique"></a>

 何らかの認証を行う際、認証情報が誤って開示、共有、盗難されたりなどのリスクを軽減または排除するには、長期的認証情報ではなく一時的な認証情報を使うことが推奨されます。 

**期待される成果:** 長期的認証情報のリスクを軽減するには、人的および機械両方の ID にできるだけ一時的な認証情報を使用するようにします。長期的認証情報を使用すると、多くのリスクが生じます。たとえば、パブリックな GitHub リポジトリにコードでアップロードすることができます。一時的な認証情報を使うことにより、認証情報が侵害されるリスクが大幅に減少します。

**一般的なアンチパターン:**
+  開発者が、フェデレーションを使って CLI から一時的な認証情報を取得するのではなく、IAM users からの長期的なアクセスキーを使用する。
+  開発者がコードに長期的アクセスキーを埋め込んで、そのコードをパブリック Git リポジトリにアップロードする。
+  開発者が、モバイルアプリに長期的アクセスキーを埋め込んで、アプリストアで公開する。
+  ユーザーが長期的アクセスキーを他のユーザー、または従業員と共有し、長期的アクセスキーを所有したまま離職する。
+  一時的認証情報を使用できるのに、マシン ID に対して長期的なアクセスキーを使用する。

 **このベストプラクティスが確立されていない場合のリスクレベル:** 高 

## 実装のガイダンス
<a name="implementation-guidance"></a>

 すべての AWS API と CLI リクエストに対して、長期的認証情報ではなく一時的なセキュリティ認証情報を使用します。AWS サービスに対する API および CLI リクエストは、ほとんどの場合、[AWS アクセスキー](https://docs.aws.amazon.com//latest/UserGuide/id_credentials_access-keys.html)を使って署名する必要があります。これらのリクエストの署名に使用する認証情報は、一時的でも長期的でもかまいません。長期的認証情報 (長期的アクセスキー) を使用すべき唯一の状況は、[IAM ユーザー](https://docs.aws.amazon.com//latest/UserGuide/id_users.html)または [AWS アカウント ルートユーザー](https://docs.aws.amazon.com//latest/UserGuide/id_root-user.html)を使用している場合です。AWS に対してフェデレーションを行うか、または他の方法により [IAM ロール](https://docs.aws.amazon.com//latest/UserGuide/id_roles.html)を担う場合、一時的認証情報が生成されます。サインイン認証情報を使って AWS マネジメントコンソール にアクセスしても、AWS サービスへのコールを行うために一時的な認証情報が生成されます。長期的認証情報が必要な状況はほとんどなく、一時的な認証情報でほとんどのタスクを遂行できます。 

 一時的な認証情報を優先して長期的な認証情報の使用を回避することは、フェデレーションと IAM ロールを優先して IAM ユーザーの使用を減少させる戦略と一致していなければなりません。IAM ユーザーは過去に人的とマシン ID 両方に対して使用されましたが、長期的アクセスキー使用におけるリスクを回避するため、それを使用しないよう推奨しています。 

### 実装手順
<a name="implementation-steps"></a>

 従業員、管理者、開発者、オペレーター、および顧客などの人的 ID の場合: 
+  [一元化された ID プロバイダーに依存](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/sec_identities_identity_provider.html)して、[人間ユーザーが一時的な認証情報を使って AWS にアクセスするには、ID プロバイダーにフェデレーションを使用することを義務付ける必要があります](https://docs.aws.amazon.com//latest/UserGuide/best-practices.html#bp-users-federation-idp)。ユーザーに対するフェデレーションは、[各 AWS アカウント](https://aws.amazon.com/identity/federation/) の直接フェデレーションで、または [AWS IAM Identity Center (AWS IAM アイデンティティセンター の後継サービス)](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html) および好みの ID プロバイダーを使って行うことができます。フェデレーションは、長期的な認証情報を排除するだけでなく、IAM ユーザーを使用する場合と比較して多数の利点があります。ユーザーは [直接フェデレーション](https://aws.amazon.com/blogs/security/how-to-implement-federated-api-and-cli-access-using-saml-2-0-and-ad-fs/)用のコマンド行から、または [IAM Identity Center](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html) を使用して、一時的な認証情報をリクエストすることができます。つまり、IAM ユーザーまたは、ユーザー向けの長期的認証情報を必要なケースはほとんどないということです。  
+  Software as a Service (SaaS) などのサードパーティーに、AWS アカウント のリソースへのアクセスを付与する際、[クロスアカウントロール](https://docs.aws.amazon.com//latest/UserGuide/tutorial_cross-account-with-roles.html)および[リソースベースポリシー](https://docs.aws.amazon.com//latest/UserGuide/access_policies_identity-vs-resource.html)を使用できます。 
+  消費者や顧客向けのアプリケーションに AWS リソースへのアクセスを許可する必要がある場合、[Amazon Cognito アイデンティティ プール](https://docs.aws.amazon.com/cognito/latest/developerguide/identity-pools.html)または[Amazon Cognito user pools](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-identity-pools.html) を使用して、一時的な認証情報を提供できます。認証情報のアクセス許可は、IAM ロールによって設定されます。 認証されていないゲストユーザーには、制限付きのアクセス権限を持つ IAM ロールを個別に定義できます。 

 マシン ID の場合、長期的認証情報を使用しなければならない場合があります。これらの場合、[ IAM ロールで AWS](https://docs.aws.amazon.com//latest/UserGuide/best-practices.html#bp-workloads-use-roles) にアクセスする際に、ワークロードが一時的な認証情報を使用するよう義務付ける必要があります。 
+  [Amazon Elastic Compute Cloud](https://aws.amazon.com/pm/ec2/) (Amazon EC2) の場合、Amazon EC2 に対して [ ロールを使用できます](https://docs.aws.amazon.com//latest/UserGuide/id_roles_use_switch-role-ec2.html)。 
+  [AWS Lambda](https://aws.amazon.com/lambda/) では、一時的な認証情報を使って AWS アクションを実行するためのサービス権限を付与する [Lambda ](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html)実行ロールを設定できます。AWS サービスが、IAM ロールを使って一時的な認証情報を付与する類似モデルは多数あります。 
+  IoT デバイスの場合、[AWS IoT Core 認証情報プロバイダー](https://docs.aws.amazon.com/iot/latest/developerguide/authorizing-direct-aws.html)を使って、一時的な認証情報をリクエストできます。 
+  オンプレミスのシステム、または AWS 外で実行され、AWS リソースへアクセスする必要があるシステムの場合、[IAM Roles Anywhere](https://docs.aws.amazon.com/rolesanywhere/latest/userguide/introduction.html) を使用できます。 

 一時的な認証情報が選択肢として使えず、長期的認証情報を使う必要があるシナリオがあります。これらの状況では、[が定期的に認証情報を監査してローテーションし](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/sec_identities_audit.html)、さらに [長期的認証情報が必要なユースケースに対して定期的にアクセスキーをローテーションします](https://docs.aws.amazon.com//latest/UserGuide/best-practices.html#rotate-credentials)。長期的認証情報が必要となるかもしれない例には、WordPress プラグインやサードパーティーの AWS クライアントなどが考えられます。長期的認証情報を使用すべき状況、またはデータベースログインなどの AWS アクセスキー以外の認証情報については、[AWS Secrets Manager](https://aws.amazon.com/secrets-manager/) など、シークレット管理を処理するために設計されたサービスを使用できます。Secrets Manager は、[サポートされているサービスを使用して、暗号化されたシークレットを簡単に管理、ローテーション、安全に保存できます。](https://docs.aws.amazon.com/secretsmanager/latest/userguide/integrating.html)長期的認証情報のローテーションについては、「[アクセスキーのローテーション](https://docs.aws.amazon.com//latest/UserGuide/id_credentials_access-keys.html#Using_RotateAccessKey)」を参照してください。 

## リソース
<a name="resources"></a>

 **関連するベストプラクティス:** 
+ [SEC02-BP03 シークレットを安全に保存して使用する](sec_identities_secrets.md) 
+ [SEC02-BP04 一元化された ID プロバイダーを利用する](sec_identities_identity_provider.md) 
+ [SEC03-BP08 組織内でリソースを安全に共有する](sec_permissions_share_securely.md) 

 **関連するドキュメント:** 
+  [一時的なセキュリティ認証情報](https://docs.aws.amazon.com//latest/UserGuide/id_credentials_temp.html) 
+  [AWS 認証情報](https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html) 
+  [IAM セキュリティのベストプラクティス](https://docs.aws.amazon.com//latest/UserGuide/best-practices.html) 
+  [IAM ロール](https://docs.aws.amazon.com//latest/UserGuide/id_roles.html) 
+  [IAM Identity Center](https://aws.amazon.com/iam/identity-center/) 
+  [ID プロバイダーとフェデレーション](https://docs.aws.amazon.com//latest/UserGuide/id_roles_providers.html) 
+  [アクセスキーのローテーション](https://docs.aws.amazon.com//latest/UserGuide/id_credentials_access-keys.html#Using_RotateAccessKey) 
+  [Security Partner Solutions: Access and Access Control (セキュリティパートナーソリューション: アクセスおよびアクセスコントロール)](https://aws.amazon.com/security/partner-solutions/#access-control) 
+  [AWS アカウントのルートユーザー](https://docs.aws.amazon.com//latest/UserGuide/id_root-user.html) 

 **関連動画:** 
+  [Managing user permissions at scale with AWS IAM Identity Center (AWS SSO を使用した大規模なユーザー権限の管理) (AWS IAM アイデンティティセンター の後継サービス)](https://youtu.be/aEIqeFCcK7E) 
+  [Mastering identity at every layer of the cake](https://www.youtube.com/watch?v=vbjFjMNVEpc) (すべての層での ID の把握) 