IAM ポリシー徹底解説!アクセス制御の基本から最新機能まで😎 ベストプラクティスなクラウド準拠のセキュリティを実現

IAM ポリシー徹底解説!アクセス制御の基本から最新機能まで😎 ベストプラクティスなクラウド準拠のセキュリティを実現

今回は、AWSのIAMポリシーについて、基本から最新機能まで詳しく解説していきます。

AWSを使う上で、セキュリティ対策は必須ですよね。その中でもIAMポリシーは、AWSリソースへのアクセスを制御する上で非常に重要な役割を担っています。

IAMポリシーを正しく設定することで、権限のないユーザーやアプリケーションからのアクセスを防ぎ、セキュリティリスクを最小限に抑えることができます。

IAM ポリシーとは?

IAMポリシーとは、AWSリソースへのアクセス権限を定義したJSON形式のドキュメントです。ポリシーには、誰が(プリンシパル)、どのアクションを(アクション)、どのリソースに対して(リソース)、どのような条件下で(条件)実行できるかを記述します。

例えば、特定のユーザーにS3バケットへの読み取り専用アクセスを許可したり、特定のIPアドレスからのアクセスのみを許可したりするといったことが可能です。

アクセス制御の仕組み

AWSでは、共有セキュリティ責任モデルを採用しています。これは、AWSとユーザーがそれぞれ責任を分担してセキュリティ対策を行うという考え方です。

責任のスコープ責任分担
グローバルインフラストラクチャAWS
コンピューティング、ストレージ、データベース、ネットワークAWS
オペレーティングシステム、ネットワーク、ファイアウォールユーザー
プラットフォーム、アプリケーション、アイデンティティ、アクセス管理ユーザー

AWSは、グローバルインフラストラクチャやコンピューティングリソースなどのセキュリティを確保します。一方、ユーザーは、オペレーティングシステムやアプリケーション、そしてIAMポリシーなどを利用して、自身のAWS環境のセキュリティを確保する責任があります。

AWSへのすべてのアクセスリクエストは、IAMポリシーに基づいて評価されます。アクセスが許可されるのは、ポリシーで明示的に許可されている場合のみです。拒否は常に許可よりも優先されます。 つまり、ポリシーで許可されていても、別のポリシーで拒否されている場合はアクセスは拒否されます。

IAM ポリシーの種類

IAMポリシーには、大きく分けて以下の2つの種類があります。

  • アイデンティティベースのポリシー: ユーザー、グループ、ロールなどのアイデンティティにアタッチされるポリシーです。
  • リソースベースのポリシー: S3バケット、DynamoDBテーブルなどのリソースに直接アタッチされるポリシーです。

さらに、IAMポリシーは、アクセスを制限するものと許可するものに分類できます。

アクセス制限

  • サービスコントロールポリシー(SCP): AWS Organizationsの組織またはOUレベルで定義され、IAMロールが実行できるアクションを制限します。SCPはアクセスを許可するものではなく、制限するためのものです。
  • パーミッションバウンダリー: IAMロールにアタッチされ、ロールが作成できるポリシーの最大権限を定義します。パーミッションバウンダリーもアクセスを許可するものではなく、制限するためのものです。
  • VPCエンドポイントポリシー: VPCエンドポイントにアタッチされ、エンドポイントサービスにアクセスできるプリンシパルを指定します。

アクセス許可

  • アイデンティティベースのポリシー: アイデンティティにアタッチされ、そのアイデンティティがどのリソースにアクセスできるかを定義します。
  • リソースベースのポリシー: リソースにアタッチされ、どのプリンシパルがそのリソースにアクセスできるかを定義します。

IAM ポリシーの要素

IAMポリシーは、JSON形式で記述され、以下の要素で構成されています。

  • Statement: ポリシーのステートメントを定義します。複数のステートメントを記述することができます。
  • Effect: アクセスを許可する場合は “Allow” 、拒否する場合は “Deny” を指定します。
  • Principal: アクセスを許可または拒否するプリンシパルを指定します。ユーザー、ロール、サービスなどを指定できます。
  • Action: 許可または拒否するアクションを指定します。ワイルドカード(*)を使用して複数のアクションを指定することもできます。
  • Resource: アクションの対象となるリソースを指定します。ワイルドカード(*)を使用して複数のリソースを指定することもできます。
  • Condition: アクセスを許可または拒否するための条件を指定します。条件は、日時、IPアドレス、タグなど、さまざまな要素に基づいて設定することができます。

クロスアカウントアクセス

クロスアカウントアクセスとは、あるAWSアカウントのプリンシパルが別のAWSアカウントのリソースにアクセスすることです。クロスアカウントアクセスを実現するには、以下の2つの方法があります。

  • ロールの引き受け: アクセス元のアカウントのプリンシパルが、アクセス先のアカウントで定義されたロールを引き受けます。ロールを引き受けることで、アクセス先のアカウントのリソースにアクセスできるようになります。
  • リソースベースポリシー: アクセス先のアカウントのリソースに、アクセス元のアカウントのプリンシパルを許可するリソースベースポリシーをアタッチします。

IAM ポリシーのベストプラクティス

IAMポリシーを作成する際には、以下のベストプラクティスを考慮することが重要です。

  • 最小権限の原則: 必要最小限の権限のみを付与する。
  • グループとロールの活用: 個々のユーザーにポリシーを直接アタッチするのではなく、グループやロールを介して権限を管理する。
  • 定期的な見直し: ポリシーは定期的に見直し、不要な権限を削除する。
  • アクセスログの監視: CloudTrailを使用してアクセスログを監視し、不正なアクセスを検知する。
  • セキュリティツールの活用: IAM Access AnalyzerやAWS Configなどのセキュリティツールを活用して、セキュリティリスクを評価する。

まとめ

今回は、AWS IAMポリシーについて解説しました。 IAMポリシーは、AWSリソースへのアクセスを制御するための重要な仕組みです。 セキュリティリスクを最小限に抑えるために、最小権限の原則やグループとロールの活用、定期的な見直しなど、IAMポリシーのベストプラクティスを理解し、適切に設定することが重要です。

AWSモダナイズ開発データ分析基盤構築とデータ活用支援、基幹業務システムのUI.UX刷新はお気軽にお問い合わせください。