メニュー
AWS Identity and Access Management
ユーザーガイド

IAM のベストプラクティス

AWS リソースのセキュリティを確保するために、AWS Identity and Access Management (IAM) サービスの次の推奨事項に従うことができます。

AWS アカウント (ルート) のアクセスキーをロックする

お客様はアクセスキー(アクセスキー ID およびシークレットアクセスキー)を使用し、AWS に対してプログラムによるリクエストをすることができます。ただし、AWS アカウント(ルート)のアクセスキーを使用しないでください。AWS アカウントのアクセスキーにより、請求情報を含む、すべての AWS サービスのお客様のリソースすべてにフルアクセスできます。AWS アカウントアクセスキーに関連付けられたアクセス許可を制限することはできません。

そのため、クレジットカード番号や他の機密情報を保護するのと同じように、自身の AWS アカウントアクセスキーを保護してください。これを行うには、いくつかの方法があります。

  • ご自身の AWS アカウントに対するアクセスキーをまだお持ちでない場合、絶対に必要でない限りは作成しないようにしてください。代わりに、アカウント E メールアドレスとパスワードを使用して AWS マネジメントコンソール にサインインし、管理権限を持つ IAM ユーザーを作成します。詳しくは次のセクションを参照してください。

  • すでにご自身の AWS アカウントに対するアクセスキーをお持ちの場合は、削除してください。それを保持する必要がある場合は、アクセスキーを定期的にローテーション(変更)してください。AWS アカウントのアクセスキーを削除または変更するには、AWS マネジメントコンソール のセキュリティ認証情報ページにアクセスして、アカウントの電子メールアドレスとパスワードでサインインします。ご自身のアクセスキーは [Access keys] セクションで管理できます。

  • ご自身の AWS アカウントのパスワードやアクセスキーを決して他者に開示しないでください。当ドキュメントの残りのセクションでは、お客様のアカウント認証情報を他のユーザーと共有するのを避ける様々な方法、およびアプリケーションにアカウント認証情報を埋め込むのを避ける方法について紹介しています。

  • AWS マネジメントコンソール にアクセスするアカウントレベルを保護するために、強度の高いパスワードを設定します。AWS アカウントパスワードの管理の詳細については、「AWS アカウント(「ルート」)パスワードの変更」を参照してください。

  • AWS アカウントの AWS 多要素認証 (MFA) を有効にします。詳細については、「AWS での多要素認証 (MFA) の使用」を参照してください。

個々の IAM ユーザーの作成

AWS にアクセスするのに、お客様の AWS ルートアカウント認証情報を使用しないでください。また、他の誰にもご自身の認証情報を譲渡しないでください。代わりに、AWS アカウントへのアクセスが必要な人用に個別のユーザーを作成します。また同様にご自身にも IAM ユーザーを作成することにより、IAM ユーザーに管理者特権を与え、それらのユーザーをお客様の全作業で使用することができます。これを行う方法については、「最初の IAM 管理者のユーザーおよびグループの作成」を参照してください。

お客様のアカウントにアクセスする人に対して個別 IAM ユーザーを作成することにより、IAM ユーザーそれぞれに一意の認証情報を設定することができます。さらに、各 IAM ユーザーにそれぞれ異なるアクセス許可を付与することもできます。必要な場合には、いつでも IAM ユーザーのアクセス許可を変更、または無効にすることができます。(AWS ルート認証情報をいったん譲渡してしまうと無効にするのが難しくなり、アクセス許可を制限できなくなります。)

注記

しかし個別 IAM ユーザーに対しアクセス許可を設定する前に、グループに関する次のポイントを確認してください。

AWS 定義のポリシーを使用して可能な限り権限を割り当てる

可能な限り権限を付与するには、AWS によって作成および保守されている管理ポリシーを使用することをお勧めします。これらのポリシーを使用する主な利点は、新しいサービスとして AWS によってこれらの保守や更新が行われる、あるいは新しいAPIが導入されることです。

AWS が管理するポリシーは、一般的なタスクをサポートするためのものです。通常これらは、単一のサービスや限定された一連のアクションへのアクセスを提供します。AWS 管理ポリシーの詳細については、AWS 管理ポリシー を参照してください。

職務機能の AWS 管理ポリシーは、複数のサービスに対応し、IT 業界の一般的な職務機能に連携することができます。職務機能ポリシーのリストと説明については、職務機能の AWS 管理ポリシー を参照してください。

IAM ユーザーへのアクセス権限を割り当てるためにグループを使用する

個々の IAM ユーザーの権限を定義する代わりに、ジョブ機能 (管理者、開発者、監査など) に関連するグループを作成する方が便利です。次に、各グループに関連のあるアクセス権限を定義します。最後に、IAM ユーザーをそれらのグループに割り当てます。IAM グループのすべてのユーザーに、グループに割り当てられたアクセス許可が継承されます。このようにすれば、グループ全体の変更を一度でできるのです。お客様の会社内で社員の異動がある場合は、単に IAM ユーザーが所属する IAM グループを変更すればよいだけです。

詳細については、以下を参照してください。

最小権限を付与する

IAM ポリシーを作成するとき、最小限の特権を認めるという標準的なセキュリティアドバイスに従いましょう。そうすれば、タスクを実行するというリクエストのアクセス許可のみを認めることができます。ユーザーが何をする必要があるのかを決定し、それから各ユーザーに見合ったポリシーを作成します。そうすることにより、ユーザーは、それらのタスクのみを実行します。

最小限のアクセス権限から開始し、必要に応じて追加のアクセス権限を付与します。この方法は、寛容なアクセス権限で始め、後でそれらを強化しようとするよりも安全です。

適切なアクセス権限の設定を決めることは、ある程度のリサーチが必要になります。特定のタスクに要求されること、特定のサービスサポートのアクション、またそれらのアクションを実行するために必要なアクセス権限を決定します。アクセスレベルで必要な権限を判断するには、アクセスレベルを使用して、IAM 権限を確認する を参照してください。

これを支援する 1 つの機能は、[Access Advisor] タブです。このタブは、ユーザー、グループ、ロール、またはポリシーを確認する際に、IAM コンソールの詳細ページで使用できます。このタブには、ユーザー、グループ、ロール、またはポリシー使用するユーザーによって実際に使用されるサービスに関する情報が含まれます。この情報を使用して不要なアクセス権限を識別し、最小権限の原則により良く準拠するよう IAM ポリシーを改善することができます。詳細については、「サービスの最終アクセス時間データ」を参照してください。

詳細については、以下を参照してください。

アクセスレベルを使用して、IAM 権限を確認する

AWS アカウントのセキュリティを向上させるには、各 IAM ポリシーを定期的に確認し、監視する必要があります。ポリシーが、必要なアクションだけを実行するのに必要な 最小限の特権 が付与されていることを確認します。

ポリシーを確認すると、そのポリシー内の各サービスのアクセスレベルの要約を含む ポリシー概要 を表示できます。AWS は、各サービスのアクションを、ListReadWrite、または Permissions management の各アクションが実行する内容に基づいて、4 つのアクセスレベルの 1 つに分類します。これらのアクセスレベルを使用して、ポリシーに含めるアクションを判断できます。

たとえば、Amazon S3 サービスでは、大きなグループのユーザーが List および Read アクションにアクセスできるようにすることができます。このようなアクションによって、これらのユーザーはバケットを一覧表示し、Amazon S3 内のオブジェクトを取得できます。ただし、バケットを削除したり、オブジェクトを S3 バケットに入れるには、小さなグループのユーザーだけが Amazon S3 Write アクションにアクセスできるようにする必要があります。さらに、管理者だけが Amazon S3 Permissions management アクションにアクセスできるようにアクセス権限を制限する必要があります。これにより、限られた数の人だけが Amazon S3 のバケットポリシーを管理できるようになります。これは、IAM および AWS Organizations サービスにおける Permissions management のアクションにとって特に重要です。

重要

これらのアクセスレベルに基づいてポリシーを作成または編集する前に、各アクセスレベルの定義を確認してください。必要なアクションが期待どおりに分類されていることを確認してください。各 AWS アクセスレベルについて学び、特定のサービスの各アクションレベルに属するアクションのリストを表示するには、AWS IAM アクセスのレベルによってグループ化されたポリシーのアクション を参照してください。

ポリシーのアクセスレベルを確認するには、まずポリシーの概要を特定する必要があります。ポリシーの概要は、管理ポリシーのポリシーページに、およびユーザーに添付されているポリシーのユーザーページに含まれています。詳細については、「ポリシー概要 (サービスの一覧)」を参照してください。

ポリシー概要では、アクセスレベルの列は、ポリシーがサービスの 4 つの AWS アクセスレベルの 1 つ以上にフルまたは制限アクセスを提供することを示します。あるいは、ポリシーがサービス内のすべてのアクションにフルアクセスを提供していることが示されます。 このアクセスレベル列の情報を使用して、ポリシーが提供するアクセスレベルを理解することができます。その後、AWS アカウントをより安全にするためのアクションを取ることができます。アクセスレベルの概要の詳細と例については、ポリシー概要内のアクセスレベルの概要について を参照してください。

ユーザーの強力なパスワードポリシーを設定

ユーザーが各自のパスワードを変更できるようにする場合は、強力なパスワードを作成し、パスワードを定期的に変更するようユーザーに要求します。IAM コンソールの [アカウント設定] ページで、アカウントのパスワードポリシーを作成できます。パスワードポリシーを使用して、最小文字数、アルファベット以外の文字が必要かどうか、変更頻度など、パスワードの要件を定義できます。

詳細については、「IAM ユーザー用のアカウントパスワードポリシーの設定」を参照してください。

特権ユーザーに対して MFA を有効化する

追加セキュリティとして、特権のある IAM ユーザー (機密性の高リソースまたは API にアクセスが許されているユーザー) に対して多要素認証 (MFA) を有効化することができます。MFA により、ユーザーは独自の認証コード (ワンタイムパスワード、または OTP) を作成するデバイスを使用することができます。その場合、ユーザーは自身の通常の認証情報 (ユーザーネームやパスワードなど) および OTP を提供する必要があります。MFA デバイスは、ハードウェアの特定部品のほか、またはスマートフォンで作動するアプリのような仮想デバイスでも可能です。

詳細については、「AWS での多要素認証 (MFA) の使用」を参照してください。

Amazon EC2 インスタンスで実行するアプリケーションに対し、ロールを使用する

Amazon EC2 インスタンスで作動するアプリケーションは、他の AWS サービスにアクセスするために認証情報が必要です。アプリケーションに認証情報を提供する安全な方法は、IAM ロールを使用することです。IAM ロールは独自のアクセス許可を持ったエンティティではありますが、ユーザーまたはグループではありません。また、IAM ユーザーが持っているような永続的な自身の認証情報は設定されていません。Amazon EC2 の場合、IAM は EC2 インスタンスに一時的な認証情報を動的に提供し、これらの認証情報は自動的に更新されます。

EC2 インスタンスの起動時に、起動パラメータとしてインスタンスのロールを特定することができます。EC2 インスタンスで作動するアプリケーションは、AWS リソースにアクセスする際に、ロールの認証情報を使用できます。ロールのアクセス許可とは、アプリケーションを実施しても良いという決定することです。

詳細については、「Amazon EC2 インスタンスで実行されるアプリケーションに IAM ロールを使用してアクセス権限を付与する」を参照してください。

認証情報を共有するのではなく、ロールを使って委託する

他の AWS アカウントからのユーザーが、お客様の AWS アカウントのリソースにアクセスできるようにする必要が生じる場合があります。その場合、アクセスキーなどのセキュリティ認証情報をアカウント間で共有してはいけません。その代わりに、IAM ロールを使用します。 他のアカウントの IAM ユーザーに許可されている権限を指定するロールを定義できます。また、そのロールを引き受けることが許可されている IAM ユーザーを持つ AWS アカウントを指定することもできます。

詳細については、「ロールに関する用語と概念」を参照してください。

認証情報を定期的にローテーションする

お客様自身のパスワードとアクセスキーを定期的に変更し、アカウント内のすべての IAM ユーザーにも変更を促してください。そうすることにより、知らない間にパスワードまたはアクセスキーが漏れた場合でも、その認証情報を使ってお客様のリソースにアクセスされる期間を制限できます。パスワードポリシーをアカウントに適用することで、すべての IAM ユーザーにパスワードの変更を要求できます。また、ユーザーに要求するパスワードの変更頻度を選択することもできます。

アカウントのパスワードポリシーを設定する方法の詳細については、「IAM ユーザー用のアカウントパスワードポリシーの設定」を参照してください。

IAM ユーザーのアクセスキーのローテーションについては、「アクセスキーの更新(AWS CLI、Tools for Windows PowerShell、および AWS API)」を参照してください。

不要な認証情報を削除する

IAM ユーザーの不要な認証情報(パスワードとアクセスキー)は削除します。たとえば、アプリケーションに使用される IAM ユーザーはパスワードを必要としません(パスワードは、AWS ウェブサイトへのサインインにのみ必要です)。同様に、ユーザーがアクセスキーを使用しておらず、今後も使用する予定がない場合、そのユーザーがアクセスキーを持つ理由はありません。

アカウント内のすべての IAM ユーザーと、ユーザーの各種認証情報(パスワード、 アクセスキー、MFA デバイスなど)のステータスが示された認証情報レポートを生成し、ダウンロードできます。 パスワードおよびアクセスキーについては、認証情報の最近の使用状況が認証情報レポートに表示されます。最近使用されていないパスワードやアクセスキーは削除の対象となります。

IAM 認証情報レポートの詳細については、「AWS アカウントの認証情報レポートの取得」を参照してください。

認証情報レポートを使用できるだけでなく、次の IAM API を使用して、パスワードまたはアクセスキーが最後にいつ使用されたかを特定することもできます:

追加セキュリティに対するポリシー条件を使用する

実行可能な範囲内で、どの IAM ポリシーがリソースにアクセスできるかという条件を定義します。たとえば、要求が発生しなければならない許容 IP アドレスの範囲を指定するための条件を記述できます。また、指定した日付範囲または時間範囲内でのみリクエストが許可されるように指定することもできます。また、SSL または MFA (多要素認証) の使用を必要とする条件を設定することもできます。たとえば、Amazon EC2 インスタンスを終了できるようにするため、ユーザーに対し MFA デバイスの認証を要求できます

詳細については、『IAM ポリシーエレメントのリファレンス』の「条件」を参照してください。

AWS アカウントのアクティビティの監視

AWS のロギング機能を使用すると、ユーザーがアカウントで実行したアクションや使用されたリソースを確認できます。ログファイルには、アクションの日時、アクションのソース IP、不適切なアクセス許可のために失敗したアクションなどが示されます。

ロギング機能は次の AWS サービスで使用できます。

  • Amazon CloudFront – CloudFront が受信したユーザーリクエストを記録します。詳細については、Amazon CloudFront 開発者ガイド の「アクセスログ」を参照してください。

  • AWS CloudTrail – AWS アカウントが行った、または AWS のために行われた AWS API 呼び出しとそれに関連するイベントを記録します。詳細については、AWS CloudTrail User Guideを参照してください。

  • Amazon CloudWatch – AWS クラウドリソースと AWS で実行されるアプリケーションを監視します。定義したメトリクスに基づいて、CloudWatch でアラームを設定できます。詳細については、Amazon CloudWatch ユーザーガイドを参照してください。

  • AWS Config – IAM ユーザー、グループ、ロール、およびポリシーを含む、AWS リソースの設定に関する詳細な履歴情報を提供します。たとえば、AWS Config を使用すると、特定の時刻にユーザーまたはグループに属していたアクセス許可を確認できます。詳細については、AWS Config Developer Guideを参照してください。

  • Amazon Simple Storage Service (Amazon S3) – Amazon S3 バケットへのアクセスリクエストを記録します。詳細については、『Amazon Simple Storage Service 開発者ガイド』の「サーバーアクセスログ記録」を参照してください。

IAM ベストプラクティスについてビデオで説明する

以下のビデオには、これらのベストプラクティスについて、またベストプラクティスで述べられた機能の操作方法についての追加の詳細を示す参考説明が含まれています。