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

最初は最小限のアクセス許可から開始し、必要な場合には追加のアクセス許可を認める方が、最初にあまりにも寛大にアクセス許可を許し、後に規制を厳しくしようとするより安全です。

適切なアクセス許可の設定を決めることは、ある程度のリサーチが必要になります。特定のタスクに要求されること、特定のサービスサポートのアクション、またそれらのアクションを実行するために必要なアクセス許可などです。

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

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

ユーザーのために強度の高いパスワードポリシーを設定する。

ユーザーが各自のパスワードを変更できるようにする場合は、強力なパスワードを作成し、パスワードを定期的に変更するようユーザーに要求します。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 (Multi-Factor Authentication) の使用を要求する条件も設定できます。たとえば、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 ベストプラクティスについてのビデオ説明。

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