AWS Identity and Access Management (IAM) よくある質問

全般

IAM は、AWS のすべてにおいてきめ細かいアクセスコントロールを提供します。IAM を利用することで、特定の条件下でサービスやリソースへのアクセスをコントロールすることができます。IAM ポリシーを使用して、ワークフォースやシステムに対する許可を管理し、最小特権を確保します。IAM は、追加料金なしでご利用いただけます。詳細については、「IAM とは」をご覧ください。

IAM は、AWS のサービスに対して認証と認可を提供します。AWS のリクエストが許可されるか拒否されるかをサービスが評価します。アクセスはデフォルトでは拒否され、ポリシーで明示的にアクセスを許可した場合のみ許可されます。ロールやリソースにポリシーを設定することで、AWS 全体のアクセスを制御することができます。詳細については、「IAM の仕組みについて」を参照してください。

IAM ポリシーで許可を設定する場合、タスクの実行に必要な許可のみを付与します。このプラクティスは、最小特権の付与として知られています。 IAM では、特定の条件下で特定のリソースに対して実行可能なアクションを定義することで、最小特権の許可を適用することができます。詳細については、「AWS リソースのアクセス管理」を参照してください。

IAM を使用して AWS のサービスとリソースの許可の管理を開始するには、IAM ロールを作成し、それに許可を付与します。ワークフォースユーザーの場合、アイデンティティプロバイダーにより認定可能なロールを作成します。システムの場合は、Amazon EC2 や AWS Lambda など、使用しているサービスにより設定可能なロールを作成します。ロールを作成したら、そのロールにポリシーを設定することで、ニーズに応じた許可を付与することができます。使い始めの頃は、必要な具体的な許可が分からないこともあるので、まずは広めの許可から始めるとよいでしょう。 AWS マネージドポリシーは、使い始めるのに役立つ許可を提供し、すべての AWS アカウントで使用できます。その後、ユースケースに特化したカスタマーマネージドポリシーを定義することで、さらに許可を削減します。ポリシーとロールは、IAM コンソール、AWS API、AWS CLI で作成および管理できます。詳細については、「IAM の開始方法」をご参照ください。

IAM リソース

AWS Identity and Access Management (IAM) ロールは、一時的なセキュリティ認証情報に依存することで AWS にアクセスする方法を提供します。各ロールは、AWS のサービスリクエストを行うための一連の許可を持っており、ロールは特定のユーザーやグループと関連付けられていません。その代わり、アイデンティティプロバイダーや AWS のサービスなどの信頼できるエンティティがロールを引き受けます。詳細については、「IAM ロール」を参照してください。

セキュリティのベストプラクティスである短期的な認証情報に依存して、AWS アカウントへのアクセスを許可するために IAM ロールを使用する必要があります。AWS のサービスまたはアイデンティティプロバイダーのユーザーである許可されたアイデンティティは、AWS リクエストを行うためにロールを引き受けることができます。ロールに許可を付与するには、IAM ポリシーを設定します。詳細については、「ロールの一般的なシナリオ」を参照してください。

IAM ユーザーは、長期的な認証情報を持つアイデンティティです。ワークフォースユーザーのために IAM ユーザーを使用している場合があります。この場合、AWS はアイデンティティプロバイダーを使用し、ロールを想定して AWS にフェデレートすることを推奨しています。また、ロールを使用して、AWS Lambda 関数などのサービスや機能へのクロスアカウントアクセスを許可することができます。シナリオによっては、AWS アカウントにアクセスできる長期的な認証情報を有するアクセスキーを持つ IAM ユーザーが必要になる場合があります。これらのシナリオでは、AWS は、IAM のアクセスの最後に使用された情報を使用して、認証情報を頻繁にローテーションさせ、使用されていない認証情報を削除することを推奨しています。詳細については、「AWS ID 管理の概要: ユーザー」を参照してください。

IAM ポリシーは、設定するエンティティに対する許可を定義します。例えば、IAM ロールにアクセスを許可するには、そのロールにポリシーを設定します。ポリシーで定義された許可は、リクエストを許可または拒否するかどうかを決定します。また、Simple Storage Service (Amazon S3) バケットなどの一部のリソースにポリシーを設定して、アカウント間の直接アクセスを許可することができます。また、AWS 組織または組織単位にポリシーを設定して、複数のアカウントにまたがるアクセスを制限することができます。IAM ロールがリクエストを出すと、AWS はこれらのポリシーを評価します。詳細については、「アイデンティティベースのポリシー」を参照してください。

アクセスの許可

AWS Identity and Access Management (IAM) を使用してサービスやリソースへのアクセスを許可するには、ロールやリソースに IAM ポリシーを設定してください。AWS が所有、更新し、すべての AWS アカウントで利用可能な AWS マネージドポリシーを設定することから始めることができます。ユースケースに必要な特定の許可がわかっている場合、カスタマーマネージドポリシーを作成してロールに設定することができます。いくつかの AWS リソースは、Simple Storage Service (Amazon S3) バケットのようなリソースに設定されたポリシーを定義することによって、アクセスを許可する方法を提供します。これらのリソースベースのポリシーは、それらが設定されているリソースへの直接的なクロスアカウントアクセスを許可することができます。詳細については、「AWS リソースのアクセス管理」を参照してください。

ロールまたはリソースに許可を割り当てるには、ポリシーを作成します。これは、許可を定義する JavaScript Object Notation (JSON) ドキュメントです。このドキュメントには、特定のサービスアクション、リソース、および条件へのアクセスを許可または拒否する許可ステートメントが含まれています。ポリシーを作成したら、それを 1 つまたは複数の AWS ロールに設定して、AWS アカウントに許可を付与することができます。Simple Storage Service (Amazon S3) バケットなどのリソースにアカウント間の直接アクセスを許可するには、リソースベースのポリシーを使用します。IAM コンソール、または AWS API や AWS CLI でポリシーを作成します。詳細については、IAM ポリシーの作成 を参照してください。

AWS マネージドポリシーは、AWS が作成および管理し、一般的なユースケースをカバーしています。 はじめに、AWS アカウントで利用可能で、すべての AWS アカウントに共通する AWS マネージドポリシーを使用することで、より広い許可を付与することができます。そして、要件を絞り込むと、最小特権の許可を達成することを目標に、ユースケースに固有のカスタマーマネージドポリシーを定義することによって、許可を減らすことができます。詳細については、「AWS マネージドポリシー」を参照してください。

タスクの実行に必要な許可のみを付与するために、ユースケースとリソースに特化したカスタマーマネージドポリシーを作成することができます。カスタマーマネージドポリシーを使用すると、特定の要件に応じた許可を継続して絞り込むことができます。詳細については、「カスタマーマネージドポリシー」を参照してください。

インラインポリシーは、特定の IAM ロールに組み込まれ、そのロールに固有のものです。ポリシーとそれが適用されるアイデンティティの間に厳格な一対一の関係を維持したい場合、インラインポリシーを使用します。例えば、他のロールに設定されないように管理許可を付与することができます。詳細については、「インラインポリシー」を参照してください。

リソースベースのポリシーは、リソースに設定される許可ポリシーです。例えば、Simple Storage Service (Amazon S3) バケット、Amazon SQS キュー、VPC エンドポイント、AWS Key Management Service の暗号化キーにリソースベースのポリシーを設定することができます。リソースベースのポリシーをサポートするサービスの一覧は、「IAM と連携する AWS のサービス」を参照してください。リソースベースのポリシーを使用して、アカウント間の直接アクセスを許可します。リソースベースのポリシーを使用すると、誰がリソースにアクセスでき、そのリソースでどのアクションを実行できるかを定義することができます。詳細については、「アイデンティティベースおよびリソースベースのポリシー」を参照してください。

RBAC は、AWS の外部ではロールとして知られている、人の職務権限に基づいて許可を割り当てる方法を提供します。IAM は、職務権限に沿った許可を持つ IAM ロールを定義することで RBAC を提供します。そして、特定の職務権限を遂行するために、これらのロールを引き受けるためのアクセス権を個人に付与することができます。RBAC では、各 IAM ロールとそれに設定された許可を確認することで、アクセスを監査することができます。詳細については、「ABAC と従来の RBAC モデルの比較」を参照してください。

ベストプラクティスとして、各タスクを実行するために必要な特定のサービスアクションとリソースにのみアクセスを許可します。これは最小特権の付与として知られています。従業員が新しいリソースを追加した場合、それらのリソースへのアクセスを許可するようにポリシーを更新する必要があります。

ABAC は、属性に基づいて許可を定義する認可戦略です。AWS では、これらの属性はタグと呼ばれ、AWS リソース、IAM ロール、ロールセッションで定義することができます。ABAC では、タグの値に基づいて一連の許可を定義します。ロールやセッションのタグとリソースのタグを一致させることで、特定のリソースにきめ細かい許可を付与することができます。例えば、デベロッパーが「developers」という職名でタグ付けされたリソースにアクセスすることを許可するポリシーを作成することができます。 ABAC は、特定のタグで作成されたリソースに許可を付与することで、急速に成長する環境に役立ちます。詳細については、「AWS における属性ベースのアクセス制御」を参照してください。

ABAC を利用してアクセスを許可するには、まずアクセス制御に使用するタグのキーと値を定義します。次に、IAM ロールが適切なタグのキーと値を持っていることを確認します。複数のアイデンティティがこのロールを使用する場合、セッションのタグのキーと値も定義することができます。次に、リソースが適切なタグのキーと値を持つようにします。また、適切なタグを持つリソースを作成するようユーザーに要求したり、リソースを変更するためのアクセスを制限したりすることもできます。タグを配置した後、特定のアクションとリソースタイプへのアクセスを許可するポリシーを定義します。ただし、ロールタグまたはセッションタグがリソースタグと一致する場合に限ります。AWS で ABAC を使用する方法を示す詳細なチュートリアルは、「IAM チュートリアル: タグに基づいて AWS リソースにアクセスするためのアクセス許可を定義する」を参照してください。

アクセス制限

AWS Identity and Access Management (IAM) では、デフォルトではすべてのアクセスが拒否され、アクセスを許可するポリシーが必要です。大規模に許可を管理すると、許可のガードレールを実装し、アカウント間でアクセスを制限したくなることがあります。アクセスを制限するには、任意のポリシーで Deny ステートメントを指定します。Deny ステートメントがアクセス要求に適用される場合、常に Allow ステートメントよりも優先されます。例えば、AWS のすべてのアクションへのアクセスを許可し、IAM へのアクセスを拒否した場合、IAM へのリクエストはすべて拒否されます。Deny ステートメントは、アイデンティティベース、リソースベース、および AWS Organizations によるサービスコントロールポリシーなど、あらゆるタイプのポリシーに含めることができます。詳細については、「AWS Identity and Access Management によるアクセスの制御」を参照してください。

SCP は IAM ポリシーと似ており、ほぼ同じ構文を使用しています。ただし、SCP は許可を付与するものではありません。代わりに、SCP は Organizations のメンバーアカウントを持つ個々の AWS アカウント、または 組織単位内のアカウントのグループに対して AWS のサービスへのアクセスを許可または拒否します。SCP から指定されたアクションは、メンバーアカウントのルートユーザーを含むすべての IAM ユーザーとロールに影響します。詳細については、「ポリシー評価ロジック」を参照してください。 

アクセス解析

許可を付与し始めたら、探究や実験をしながらより広い範囲の許可を付与することから始めることができます。ユースケースが成熟するにつれて、AWS は最小特権の許可を達成することを目標に、必要な許可のみを付与するように許可を絞り込むことを推奨しています。AWS は、許可の絞り込みを支援するツールを提供しています。AWS によって作成、管理され、一般的なユースケースのための許可を含む AWS マネージドポリシーから始めることができます。許可を絞り込むにつれて、カスタマーマネージドポリシーで特定の許可を定義します。必要な特定の許可を決定するために、AWS Identity and Access Management (IAM) Access Analyzer を使用し、AWS CloudTrail ログを確認し、最後のアクセス情報を調査してください。また、IAM ポリシーシミュレーターを使用して、ポリシーのテストとトラブルシューティングを行うことができます。

最小特権を達成するには、要件の変化に応じて適切なきめ細かい許可を付与する継続的なサイクルが必要です。IAM Access Analyzer は、このサイクルの各ステップにおけるアクセス許可管理を効率化するのに役立ちます。 IAM Access Analyzer によるポリシー生成では、ログに記録されたアクセスアクティビティに基づいて、きめ細かなポリシーが生成されます。つまり、アプリケーションを構築して実行した後に、アプリケーションの操作に必要な許可のみを付与するポリシーを生成することができます。 IAM Access Analyzer によるポリシー検証では、100 種類以上のポリシーチェックを使用して、安全で機能的なポリシーを作成、検証します。これらのチェックは、新しいポリシーの作成時や既存のポリシーの検証に使用できます。カスタムポリシーチェックは、開発者が作成したポリシーがデプロイ前に指定したセキュリティ標準に準拠していることを確認するための有料の機能です。カスタムポリシーチェックは、自動推論 (数学的証明に裏付けられた証明可能なセキュリティ保証) の力を利用して、セキュリティチームがポリシーの不適合な更新を積極的に検出できるようにします。

IAM Access Analyzer によるパブリックおよびクロスアカウントでの調査結果は、AWS 組織またはアカウントの外側からリソースポリシーで許可されたアクセスを検証し、改良するのに役立ちます。詳細については、「IAM Access Analyzer の使用」を参照してください。IAM Access Analyzer は、アカウントを継続的に分析して未使用のアクセスを特定し、その検出結果を含む一元化されたダッシュボードを作成します。検出結果では、未使用のロール、IAM ユーザーの未使用のアクセスキー、IAM ユーザーの未使用のパスワードが明らかになっています。アクティブな IAM ロールとユーザーについては、検出結果から未使用のサービスとアクションを可視化できます。

AWS アカウントで不要になった IAM ユーザー、ロール、許可があるかもしれません。最小特権でアクセスできることを目標に、それらを削除することを推奨しています。IAM ユーザーについては、パスワードとアクセスキーの最終使用情報を確認することができます。ロールについては、ロールの最終使用情報を確認することができます。この情報は、IAM コンソール、API、および SDK を通じて利用可能です。最終使用情報は、もう使用されていない、削除しても安全なユーザーとロールを識別するのに役立ちます。また、サービス情報と最終アクセス情報を確認することで、未使用の許可を特定し、許可を絞り込むことができます。詳細については、「最終アクセス情報を使用した AWS のアクセス許可の調整」を参照してください。

未使用アクセスアナライザーを有効にすると、IAM Access Analyzer はアカウントを継続的に分析して未使用アクセスを特定し、検出結果を含む一元化されたダッシュボードを作成します。このダッシュボードは、セキュリティチームが検出結果を一元的に確認し、調査結果の量に基づいてアカウントに優先順位を付けるのに役立ちます。セキュリティチームはダッシュボードを使用して検出結果を一元的に確認し、検出結果の量に基づいてレビューするアカウントに優先順位を付けることができます。検出結果では、未使用のロール、IAM ユーザーの未使用のアクセスキー、IAM ユーザーの未使用のパスワードが明らかになっています。アクティブな IAM ロールとユーザーについては、検出結果から未使用のサービスやアクションを可視化できます。これにより、未使用のアクセスを簡単に調べることができ、権限を最小特権にとどめることができます。この機能では、毎月分析された IAM ロールまたは IAM ユーザーごとに支払いを行います。

IAM ポリシーシミュレーターは、お客様が選択したポリシーを評価し、お客様が指定した各アクションに対する有効な許可を決定します。ポリシーシミュレータは、アイデンティティベースおよびリソースベースのポリシーIAM 許可境界、および SCP をテストし、トラブルシューティングするために使用します。詳細については、「IAM ポリシーシミュレーターを使用した IAM ポリシーのテスト」を参照してください。

IAM Access Analyzer のカスタムポリシーチェックにより、デプロイ前に IAM ポリシーがお客様のセキュリティ標準に準拠しているかどうかが検証されます。カスタムポリシーチェックは、自動推論 (数学的証明に裏付けられた証明可能なセキュリティ保証) の力を利用して、セキュリティチームがポリシーの不適合な更新を積極的に検出できるようにします。たとえば、以前のバージョンよりも許容度が高い IAM ポリシーの変更などです。セキュリティチームはこれらのチェックを使用してレビューを効率化し、セキュリティ基準に準拠するポリシーを自動的に承認し、準拠していない場合はより詳細に調査することができます。この新しい種類の検証により、クラウドのセキュリティが強化されます。セキュリティチームと開発チームは、これらのカスタムポリシーチェックを、開発者がポリシーを作成するツールや環境 (CI/CD パイプラインなど) に統合することで、ポリシーレビューを大規模に自動化できます。

IAM Access Analyzer を使用すると、未使用アクセスの検査が簡単になり、最小特権になるように導かれます。セキュリティチームは IAM Access Analyzer を使用して、AWS 組織全体の未使用アクセスを可視化し、権限の適切なサイズを自動化できます。未使用アクセスアナライザーを有効にすると、IAM Access Analyzer はアカウントを継続的に分析して未使用アクセスを特定し、結果を含む一元化されたダッシュボードを作成します。このダッシュボードは、セキュリティチームが検出結果を一元的に確認し、調査結果の量に基づいてアカウントに優先順位を付けるのに役立ちます。セキュリティチームはダッシュボードを使用して検出結果を一元的に確認し、検出結果の量に基づいてレビューするアカウントに優先順位を付けることができます。検出結果では、未使用のロール、IAM ユーザーの未使用のアクセスキー、IAM ユーザーの未使用のパスワードが明らかになっています。アクティブな IAM ロールとユーザーについては、検出結果から未使用のサービスとアクションを可視化できます。