Amazon Web Services ブログ

IAM Access Analyzer を利用して、アクセスアクティビティに基づいて IAM ポリシーを生成し、最小限の権限のアクセス許可を簡単に実装する

2019 年に AWS Identity and Access Management (IAM) Access Analyzer がリリースされ、既存のアクセス許可の設定状況を分析することで、意図しないパブリックおよびクロスアカウントアクセスを削除できるようになりました。2021 年 3 月、IAM Access Analyzer は、ポリシーの作成中にセキュリティで機能的なアクセス許可を設定するのに役立つポリシー検証機能を追加しました。そして、IAM Access Analyzer はさらに一歩進み、ポリシーを生成します。IAM Access Analyzer を使用して、AWS CloudTrail ログのアクセスアクティビティに基づいて、きめ細かなポリシーを生成できるようになりました。ポリシーの生成を要求すると、IAM Access Analyzer が動作して、CloudTrail ログからアクティビティを識別してポリシーを生成します。生成されたポリシーは、ワークロードに必要なアクセス許可のみを付与し、最小権限のアクセス許可を簡単に実装できるようになります。

開発者は、開発環境で構築する場合は、より広範なアクセス許可から始めて、必要な AWS 機能を試して判断します。ワークロードが完成に近づくにつれて、使用されるサービスとアクションにのみアクセス許可を絞り込む必要があります。これにより、開発環境から運用環境にワークロードを移行する際にポリシーがセキュリティのベストプラクティスに従っていることが保証されます。IAM Access Analyzerを使用して、必要なアクセスのみを付与するきめ細かなポリシーをより簡単に生成できるようになりました。この記事では、IAM Access Analyzer を使用したポリシー生成の仕組みの概要を説明し、ポリシーを生成、カスタマイズ、および作成する手順について説明します。

概要

ポリシーを生成するには、IAM コンソールに移動して、ロールに移動します。そこから、CloudTrail 証跡と日付範囲を指定してポリシーをリクエストします。その後、IAM Access Analyzer は CloudTrail ログの分析を実行しポリシーを生成します。IAM Access Analyzer がポリシーを生成したら、ポリシーを取得してカスタマイズできます。一部のサービスでは、IAM Access Analyzer は CloudTrail に記録されたアクションを識別し、アクションレベルのポリシーを生成します。IAM Access Analyzer は、必要なアクションを指定するためのガイドに使用されるすべてのサービスも識別します。アクセス許可をさらに絞り込むために、IAM Access Analyzer はリソースレベルのアクセス許可をサポートするアクションを識別し、テンプレートを提供します。テンプレートに対してリソース ARN を指定して、リソースレベルのアクセス許可を設定できます。これにより、特定のリソースへのアクセスを制限する詳細なアクセス許可を簡単に指定できます。IAM Access Analyzer を使用したポリシーの生成は追加料金なしで利用でき、IAM コンソールから、または CLI と SDK を使用してプログラムから使用することができます。

ここでは、IAM コンソールから IAM Access Analyzer を使用し、ワークロードのポリシーを生成する方法の例について説明します。

CloudTrail 上のアクテビティに基づいてロールに対応したポリシーを生成する

この例では、上級開発者 ソフィア マルチネス が Example Corp の e コマースウェブアプリケーションを実行するマイクロサービスオーケストレータを構築しています。彼女の主な役割は、マイクロサービスを構築することです。これらのマイクロサービスでは、IAM ポリシーを作成して、きめ細かいアクセス許可を提供する必要があります。ホリデーショッピングに向けた今後のリリースのためにソフィアは開発を完了し、アプリケーションをローンチする準備が整いました。具体的には、アプリケーションに必要な最小限のアクセス許可のみを持つようにしたいと考えています。そのために、ソフィア は IAM Access Analyzer を使用してポリシーを生成し、アプリケーションロールへのアクセスを容易に設定します。

AWS マネジメントコンソールでポリシーを生成するには

  1. IAM コンソールを開き、ナビゲーションペインでロールを選択します。
  2. 分析するロールを選択します。この例では、ソフィア は AWS_Test_Role を選択します。
  3. 図 1 に示すように、CloudTrail イベントに基づいてポリシーを生成のセクションでポリシーの生成を選択します。
    図 1 : ロールの詳細のページからポリシーを生成する

    図 1 : ロールの詳細のページからポリシーを生成する

     

  4. ポリシーの生成ページで、IAM Access Analyzer が CloudTrail ログを確認してポリシーを作成する時間枠を選択します。この例では、ソフィアは過去 6 日以内にアプリケーションをテストしたため、図 2 に示すように、その時間枠を選択します。

    図 2 : 期間の指定

    図 2 : 期間の指定

図 2: 期間の指定

この機能を初めて使用する場合: 証跡を選択 で、IAM Access Analyzer で確認する証跡を選択し、新しいサービスロールを作成して使用 を選択し、ポリシーを生成 を選択します。

既存のサービスロールがある場合は、既存のサービスロールを使用 を選択し、使用可能なオプションからロールを選択し、ポリシーを生成 を選択します (図 3 を参照)。この例では、ソフィアは既存のサービスロールを使用して、ポリシーを生成 を選択してポリシーの生成を開始します。

図 3 : CloudTrail アクセス

図 3 : CloudTrail アクセス

ポリシーの準備ができたら、ロールページに通知が表示されます。アクセス許可を確認するには、図 4 に示すように、生成されたポリシーを表示を選択します。

図 4 : ポリシー生成の進捗

図 4 : ポリシー生成の進捗

(オプション)ポリシーをカスタマイズするには

一部のサービスでは、生成されたポリシー ページで、生成されたポリシー内のサービスおよび関連するアクションの概要を確認できます。この例では、ソフィア は、図 5 に示すように、アプリケーションで Amazon Elastic Compute Cloud(Amazon EC2)、AWS IAM、AWS Lambda、Amazon Simple Storage Service(Amazon S3)、および関連するアクションが使用されていることがわかります。

図 5 : 生成されたポリシーのサービスとアクション

図 5 : 生成されたポリシーのサービスとアクション

図 6 に示すように、使用されているすべてのサービスを確認し、アプリケーションに必要なアクセス許可を選択することもできます。この例では、ソフィアは自分のアプリケーションが Amazon Simple Queue Service(Amazon SQS)を使用していることを認識し、そのアプリケーションに SQS: ReceiveMessage および SQS: SendMessage が必要であることを認識しています。彼女はドロップダウンからアクションを選択します。図 6 に、ソフィア が必要なアクセス許可を指定するのに役立つポリシーテンプレートを示します。

図 6 : 利用したサービスに対してアクションを追加

図 6 : 利用したサービスに対してアクションを追加

次に、ポリシーを確認し、プレースホルダーをアプリケーションが使用するリソース ARN に置き換えて、リソースレベルのアクセス許可を指定します。リソースプレースホルダを使用すると、特定のリソースへのアクセスを制限するきめ細かいアクセス許可を簡単に指定できます。これにより、セキュリティのベストプラクティスに従うことができ、アクセスを許可するリソースを正確に指定できるため、リソースのサブセットだけにアクセスを制限できます。

この例では、ソフィア は EC2: RunInstances でリソースレベルの指定が可能なことに気づき、プレースホルダを、アプリケーションが使用するインスタンスへのアクセスを制限するインスタンス ARN に置き換えます (図 7 を参照)。

図 7 : ポリシーの権限カスタマイズ

図 7 : ポリシーの権限カスタマイズ

アクセス権限のカスタマイズ ページで、ポリシーのカスタマイズが完了したら、次へ を選択してポリシーを確認します。

ポリシーを作成してアタッチするには

管理ポリシーを確認および作成 ページで、組織のベストプラクティスに従ってポリシー名を更新し、アクセス許可の概要を確認します。必要に応じて、説明を追加して、ポリシーの意図を定義できます。この例では、ソフィアはポリシーに名前を付けて、説明を追加します (図 8 を参照)。

図 8 : ポリシーの確認と作成

図 8 : ポリシーの確認と作成

ポリシーを作成およびアタッチ を選択して、ポリシーをアプリケーションロールにアタッチします。

ロールが作成されると、ソフィアはそのロールにアタッチされた他のポリシーを削除し、最小限に設定された権限で作業出来るようになります。

プログラムでポリシーを作成したり、確認したりするには、以下のの IAM Access Analyzer API を使用して、ポリシーを要求したり取得したりできます。

start-policy-generation :IAM ユーザーまたはロールのポリシーを生成します。最初にこの API を呼び出して、ポリシーの生成を開始します。IAM Access Analyzer が CloudTrail ログを確認する必要がある期間を指定します。

get-generated-policy : この API を呼び出して、生成されたポリシーを取得して表示します。

詳細については、AWS IAM ユーザーガイドの「アクセスアクティビティに基づいてポリシーを生成する」を参照してください。

まとめ

IAM Access Analyzer を使用すると、CloudTrail アクティビティに基づいて IAM ポリシーを生成することが出来、アプリケーションロールにきめ細かいアクセス許可を付与しやすくなります。ポリシーを生成する方法の詳細については、AWS IAM ユーザーガイドのアクセスアクティビティに基づいてポリシーを生成するを参照してください。

このブログ投稿についてご質問がある場合は、AWS IAM フォーラムで新しいスレッドを開始するか、AWS サポートにお問い合わせください。

このブログは、AWS Security SA の高橋が翻訳しました。原文のブログはこちらです。