0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AWS ポリシー lambdaから特定のEC2内のエンドポイントを実行するためのユーザーポリシー

Last updated at Posted at 2023-03-08

概要

  • lambda関数からEC2にアクセスしたい場合にlambdaに付与するロールに追加するユーザー定義ポリシーを紹介する

作りたいもの

  • VPC内にあるEC2インスタンス内にあるWebサーバーにあるAPIエンドポイントにLambda関数(Node.js)からリクエストを贈りたい。
  • その際にEC2インスタンスを指定してlambda → EC2インスタンスのアクセスを許可したい。

結論

  • 特定のEC2インスタンスにしかアクセスさせたくないので下記の様に定義する。

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "logs:CreateLogGroup",
                    "logs:CreateLogStream",
                    "logs:PutLogEvents",
                    "ec2:CreateNetworkInterface",
                    "ec2:DescribeNetworkInterfaces",
                    "ec2:DeleteNetworkInterface",
                    "ec2:AssignPrivateIpAddresses",
                    "ec2:UnassignPrivateIpAddresses"
                ],
                "Resource": "arn:aws:ec2:ap-northeast-1:当該EC2の詳細の「所有者」の数字:instance/当該EC2の概要にある「インスタンスID」"
            }
        ]
    }
    
  • 前述のJSONをユーザー定義ポリシーとして作成しlambda関数に割り当てられているロールにそのユーザー定義ポリシーを追加する。

方法

  1. 「lambdaをEC2と同じVPCに設置してEC2にアクセスする」ためのポリシーは実はAWSが既に用意してくれている。そのポリシーがAWSLambdaVPCAccessExecutionRoleポリシーである。

  2. 下記に当該のポリシーを記載する。

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "logs:CreateLogGroup",
                    "logs:CreateLogStream",
                    "logs:PutLogEvents",
                    "ec2:CreateNetworkInterface",
                    "ec2:DescribeNetworkInterfaces",
                    "ec2:DeleteNetworkInterface",
                    "ec2:AssignPrivateIpAddresses",
                    "ec2:UnassignPrivateIpAddresses"
                ],
                "Resource": "*"
            }
        ]
    }
    
  3. ぶっちゃけ↑のポリシーをlambdaのロールに付与すれば事は済む。

  4. ただリソース(EC2インスタンス)が指定されていないからAWSの言う「最小の権限」にはなってない。

  5. そこで下記の記事を参考にEC2のインスタンスをarnで指定してあげただけである。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?