AWS Lambda アクセス許可の管理 - AWS Lambda

AWS Lambda アクセス許可の管理

AWS Identity and Access Management (IAM) を使用して AWS Lambda でアクセス許可を管理できます。Lambda 関数を使用する際に考慮する必要があるアクセス許可には、主に次の 2 つのカテゴリがあります。

  • Lambda 関数が API アクションを実行して他の AWS リソースにアクセスするために必要なアクセス許可

  • 他の AWS ユーザーやエンティティが Lambda 関数にアクセスするために必要なアクセス許可

Lambda 関数は、多くの場合、他の AWS リソースにアクセスし、それらのリソースに対してさまざまな API オペレーションを実行する必要があります。例えば、Amazon DynamoDB データベースのエントリを更新してイベントに応答する Lambda 関数があるとします。この場合、その関数にはデータベースにアクセスするためのアクセス許可と、そのデータベースに項目を配置または更新するためのアクセス許可が必要です。

Lambda 関数に必要なアクセス許可は、実行ロールと呼ばれる特別な IAM ロールで定義します。このロールでは、関数が他の AWS リソースにアクセスして、イベントソースから読み取るために必要なすべてのアクセス許可を定義するポリシーをアタッチできます。すべての Lambda 関数には実行ロールが必要です。Lambda 関数はデフォルトで Amazon CloudWatch にログ記録するため、実行ロールには、少なくとも Amazon CloudWatch へのアクセス権が必要です。AWSLambdaBasicExecutionRole マネージドポリシーを実行ロールにアタッチして、この要件を満たすことができます。

他の AWS アカウント、組織、サービスに、Lambda リソースにアクセスするためのアクセス許可を付与するには、いくつかのオプションがあります。

  • ID ベースのポリシーを使用して、Lambda リソースへのアクセス権を他のユーザーに付与することができます。アイデンティティベースのポリシーは、ユーザーに直接適用するか、ユーザーに関連付けられているグループおよびロールに適用することができます。

  • リソースベースのポリシーを使用して、Lambda リソースにアクセスするためのアクセス許可を他のアカウントや AWS サービスに付与することができます。ユーザーが Lambda リソースへのアクセスを試みた際、Lambda は、ユーザーのアイデンティティベースのポリシーと、リソースのリソースベースのポリシーの両方を認識しようとします。Amazon Simple Storage Service (Amazon S3) などの AWS のサービスが Lambda 関数を呼び出す際。Lambda はリソースベースのポリシーのみを認識しようとします。

  • 属性ベースのアクセス制御 (ABAC) モデルを使用して、Lambda 関数へのアクセスを制御できます。ABAC を使用すると、Lambda 関数にタグをアタッチしたり、特定の API リクエストでタグを渡したり、リクエストを実行する IAM プリンシパルにタグをアタッチしたりすることができます。IAM ポリシーの条件要素で同じタグを指定して、関数アクセスを制御します。

AWS のベストプラクティスとして、タスクを実行するために必要なアクセス許可のみ (最小特権のアクセス許可) を付与するようにしてください。Lambda でこれを実装するには、AWS マネージドポリシーから始めることをお勧めします。これらの管理ポリシーは、そのまま使用することができますが、より制限的なポリシーを記述する際の開始点として使用することもできます。

最小特権アクセスを実現するためにアクセス許可を微調整できるように、Lambda ではポリシーに含めることができるいくつかの追加条件が用意されています。詳細については、「ポリシーのリソースセクションと条件セクションの微調整」を参照してください。

IAM の詳細については、『IAM ユーザーガイド』を参照してください。