ablog

不器用で落着きのない技術者のメモ

特定のLambda関数の編集・実行を制限する

アプリケーションをデプロイする人に特定のLambda関数だけにはアクセスできないようにするには、ResourceでLambda関数を指定してDenyするIAMポリシーを作成してIAMロールにアタッチし、このLambda関数の編集や実行を許可する以外のIAMユーザーにIAMロールをアタッチすると実現できる。面倒だが。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Deny",
            "Action": "lambda:*", ★アクションを絞るとさらにきめ細かい制御が可能
            "Resource": [
                "arn:aws:lambda:ap-northeast-1:123456789012:function:lambdaFunction1",
                "arn:aws:lambda:ap-northeast-1:123456789012:function:lambdaFunction2"
            ]
        }
    ]
}

2018/12/4(追記):
以下のようにワイルドカードを使うことも可能。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Deny",
            "Action": "lambda:*",
            "Resource": [
                "arn:aws:lambda:ap-northeast-1:123456789012:function:admin*"
            ]
        }
    ]
}

関数のリストは表示されるが、中身は参照も変更もできない。
f:id:yohei-a:20181205003116p:plain