コンテンツにスキップ

Lambda.1

検証日: 2026-05-05 / リージョン: ap-northeast-1

概要

Lambda.1 は、Lambda 関数のリソースベースポリシーがパブリックアクセス(Principal: "*" または等価な Principal: {"AWS": "*"})を許可していないことをチェックする Security Hub CSPM コントロールである。対応する Config ルールは lambda-function-public-access-prohibited

AWS 公式ドキュメントによると、Principal: "*"Principal: {"AWS": "*"} は匿名ユーザーに対して等価である。Principal: "*" は「AWS にサインインしていない者を含む全員」を許可し、Principal: {"AWS": "*"} は「任意のアカウントの root user、IAM user、assumed-role セッション、federated user」を許可する。

Lambda は関数 URL の AuthType: NONE 設定により匿名 HTTP アクセスを可能にでき、その場合はインターネット経由の署名なし呼び出しが成立する。AuthType: NONE で関数 URL を作成すると、Principal: "*" + Action: lambda:InvokeFunctionUrl + Condition: lambda:FunctionUrlAuthType=NONE を含むリソースベースポリシーが自動生成される。

Lambda.1 の Config ルール(lambda-function-public-access-prohibited)は、リソースベースポリシーの Principal 要素が空またはワイルドカード("*" または {"AWS": "*"})の場合に NON_COMPLIANT と判定する。意図的な公開でない限り、Allow 効果でこれらのワイルドカード指定を使用しないことが推奨される。

検出範囲

Lambda.1 の特徴は「パブリックアクセスのみを検出し、クロスアカウントアクセスは検出しない」点である。クロスアカウントアクセスは IAM Access Analyzer が担当する。

Lambda 関数にリソースベースポリシーが設定されていない場合(デフォルト状態)、get-policy API は ResourceNotFoundException を返し、外部プリンシパルからの InvokeFunctionAccessDeniedException となる。外部からアクセスを許可するには、リソースベースポリシーに statement を追加する必要がある(AWS CLI では aws lambda add-permission コマンドで追加する)。

ポリシー設定外部プリンシパルからの呼び出しLambda.1IAM Access Analyzer
リソースベースポリシーなし(デフォルト)拒否(AccessDeniedExceptionPASSEDfinding なし
Principal: "*"(パブリック)許可(誰でも呼び出せる)FAILEDfinding(isPublic: true
組織外アカウント(クロスアカウント)指定アカウントのみ許可PASSEDfinding(isPublic: false
組織内アカウント(信頼ゾーン内)指定アカウントのみ許可PASSEDfinding なし

外部アクセス制御レイヤー

Lambda 関数の外部アクセスに関わるコントロールは以下の 4 種類がある。Lambda.1 は CSPM による検出レイヤーに位置する。

レイヤーコントロール役割
デフォルト保護リソースベースポリシーがデフォルトで存在せず、外部プリンシパルからの呼び出しは拒否される(AccessDeniedException
予防(SCP)CT.LAMBDA.PV.1関数 URL の AuthType: NONE(認証なし)の作成を禁止
予防(SCP)CT.LAMBDA.PV.2add-permission で外部プリンシパル(パブリック・クロスアカウント)の設定を禁止
検出(CSPM)Lambda.1(本記事)リソースベースポリシーに Principal: "*" が設定されている関数を検出
検出(IAM Access Analyzer)Lambda 関数リソースベースポリシーを解析し、パブリック・組織外クロスアカウントへの到達可能性を検出

本記事で確認すること

Lambda.1 に関わる検証は、既に他の記事で一部が完了している。本記事ではそれらをリンクで参照しつつ、未検証の項目のみを検証する。

#検証観点状態出典
1デフォルト状態でリソースベースポリシーが存在しない検証済みIAM Access Analyzer Lambda ステップ 1
2関数が存在する状態(リソースベースポリシーなし)で Lambda.1 が PASSED本記事で検証(2. デフォルト状態で Lambda.1 PASSED を確認
3Principal: "*" 設定時に Lambda.1 が FAILED検証済みCT.LAMBDA.PV.2 ステップ 3
4Principal: "*" 設定時の IAM Access Analyzer finding(isPublic: true検証済みIAM Access Analyzer Lambda ステップ 3
5組織外アカウントを設定時に Lambda.1 が PASSED のまま本記事で検証(4. Lambda.1 が PASSED のままであることを確認
6組織外アカウントを設定時の IAM Access Analyzer finding(isPublic: false検証済みIAM Access Analyzer Lambda ステップ 4
7組織内アカウントを設定時に Lambda.1 が PASSED のまま本記事で検証(6. Lambda.1 が PASSED のままであることを確認
8組織内アカウントを設定時の IAM Access Analyzer finding記述のみ(信頼ゾーン内のため finding なし)IAM Access Analyzer Analyzer のタイプ
9remove-permission で Lambda.1 が PASSED に復帰本記事で検証(9. remove-permission で PASSED に復帰することを確認
10予防コントロール CT.LAMBDA.PV.2 有効化後の既存 finding(遡及しない)検証済みCT.LAMBDA.PV.2 ステップ 6

本記事では #2、#5、#7、#9 の 4 点を検証する。

#5・#7 のように「Lambda.1 が PASSED のまま変化しない」ことを確認する場合、Security Hub finding の UpdatedAt は Config の評価結果が変わらないと更新されないケースがある(VPC BPA 記事の UpdatedAt 教訓を参照)。そのため本記事では、Config の ResultRecordedTimeadd-permission 実行時刻より後であることをもって、設定変更後に再評価されたことを確認する。

Config ルールの手動トリガー(start-config-rules-evaluation)は 1 回で評価が走らない場合があり、同じ ResultRecordedTime が返ることがある。その場合は数分待ってから再度トリガーする、または再試行する。

結果

  • デフォルト状態: Lambda 関数にリソースベースポリシーが設定されていない場合、Lambda.1 は PASSED
  • 組織外アカウントへの add-permission: Principal に組織外アカウント ID を指定して add-permission しても、Lambda.1 は PASSED のまま(IAM Access Analyzer は isPublic: false の finding を生成)
  • 組織内アカウントへの add-permission: Principal に組織内アカウント ID を指定して add-permission しても、Lambda.1 は PASSED のまま(IAM Access Analyzer も信頼ゾーン内のため finding なし)
  • remove-permission: Principal: "*" を設定して FAILED 状態にした後、Principal: "*" の statement のみを remove-permission で削除すると Lambda.1 は PASSED に復帰する(組織外・組織内の statement が残っていても PASSED)。Lambda.1 の検出対象がパブリックアクセスのみであることが確認できる

検証環境

検証環境の構成図

本記事のコマンドは、--profile 指定がない場合は Workload アカウントで実行する。事前に export AWS_PROFILE=Workload でデフォルトを設定しておくと便利。

検証の流れ

    flowchart LR
    A[1. テスト用関数<br>作成] --> B[2. デフォルト状態で<br>Lambda.1 PASSED 確認]
    B --> C[3. 組織外アカウント<br>statement 追加]
    C --> D[4. Lambda.1 PASSED<br>のまま確認]
    D --> E[5. 組織内アカウント<br>statement 追加]
    E --> F[6. Lambda.1 PASSED<br>のまま確認]
    F --> G[7. Principal:*<br>statement 追加]
    G --> H[8. Lambda.1 FAILED<br>確認]
    H --> I[9. Principal:* のみ<br>削除 → PASSED 復帰確認]
    I --> J[10. クリーンアップ]
  

1. テスト用関数の作成

Lambda 実行ロールの作成

cat > /tmp/lambda-trust.json << 'EOF'
{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"Service":"lambda.amazonaws.com"},"Action":"sts:AssumeRole"}]}
EOF

aws iam create-role --role-name lambda-1-test-role \
  --assume-role-policy-document file:///tmp/lambda-trust.json \
  --query 'Role.Arn' --output text
arn:aws:iam::<アカウント ID>:role/lambda-1-test-role
aws iam attach-role-policy --role-name lambda-1-test-role \
  --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
(出力なし)

Lambda 関数の作成

ダミーの関数コードを zip 化して関数を作成する。

cat > /tmp/lambda_function.py << 'EOF'
def handler(event, context):
    return {"statusCode": 200, "body": "ok"}
EOF
cd /tmp && zip lambda-1-test.zip lambda_function.py
  adding: lambda_function.py (deflated XX%)
aws lambda create-function \
  --function-name lambda-1-test \
  --runtime python3.12 \
  --role arn:aws:iam::<アカウント ID>:role/lambda-1-test-role \
  --handler lambda_function.handler \
  --zip-file fileb:///tmp/lambda-1-test.zip \
  --query '{FunctionName:FunctionName,State:State,FunctionArn:FunctionArn}' \
  --region ap-northeast-1
{
    "FunctionName": "lambda-1-test",
    "State": "Pending",
    "FunctionArn": "arn:aws:lambda:ap-northeast-1:<アカウント ID>:function:lambda-1-test"
}

Active 状態になるまで待つ。

aws lambda wait function-active --function-name lambda-1-test \
  --region ap-northeast-1
(出力なし)

2. デフォルト状態で Lambda.1 PASSED を確認

リソースベースポリシーが存在しないことを確認

aws lambda get-policy --function-name lambda-1-test \
  --region ap-northeast-1
An error occurred (ResourceNotFoundException) when calling the GetPolicy operation: The resource you requested does not exist.

Config ルールを手動トリガー

Lambda.1 に対応する Config ルール名を確認する。

aws configservice describe-config-rules \
  --query 'ConfigRules[?starts_with(ConfigRuleName, `securityhub-lambda-function-public-access-prohibited`)].ConfigRuleName' \
  --region ap-northeast-1
[
    "securityhub-lambda-function-public-access-prohibited-<サフィックス>"
]
aws configservice start-config-rules-evaluation \
  --config-rule-names securityhub-lambda-function-public-access-prohibited-<サフィックス> \
  --region ap-northeast-1
(出力なし)

1〜2 分待ってから評価結果を確認する。

Config の評価結果確認

aws configservice get-compliance-details-by-config-rule \
  --config-rule-name securityhub-lambda-function-public-access-prohibited-<サフィックス> \
  --query 'EvaluationResults[?EvaluationResultIdentifier.EvaluationResultQualifier.ResourceId==`lambda-1-test`].{ResourceId:EvaluationResultIdentifier.EvaluationResultQualifier.ResourceId,ComplianceType:ComplianceType,ResultRecordedTime:ResultRecordedTime}' \
  --region ap-northeast-1
[
    {
        "ResourceId": "lambda-1-test",
        "ComplianceType": "COMPLIANT",
        "ResultRecordedTime": "<評価時刻>"
    }
]

Security Hub finding 確認

Config の評価結果が Security Hub に反映されるまで 2〜3 分のラグがある。数分待ってから確認する。

aws securityhub get-findings \
  --filters '{
    "ComplianceSecurityControlId": [{"Comparison": "EQUALS", "Value": "Lambda.1"}],
    "AwsAccountId": [{"Comparison": "EQUALS", "Value": "<アカウント ID>"}],
    "ResourceId": [{"Comparison": "EQUALS", "Value": "arn:aws:lambda:ap-northeast-1:<アカウント ID>:function:lambda-1-test"}],
    "RecordState": [{"Comparison": "EQUALS", "Value": "ACTIVE"}]
  }' \
  --query 'Findings[].{Status:Compliance.Status,ResourceId:Resources[0].Id,UpdatedAt:UpdatedAt}' \
  --region ap-northeast-1
[
    {
        "Status": "PASSED",
        "ResourceId": "arn:aws:lambda:ap-northeast-1:<アカウント ID>:function:lambda-1-test",
        "UpdatedAt": "<更新時刻>"
    }
]

3. 組織外アカウントを add-permission

組織外アカウント(信頼ゾーン外)を Principal に指定して、リソースベースポリシーに statement を追加する。

aws lambda add-permission \
  --function-name lambda-1-test \
  --statement-id cross-account-external \
  --action lambda:InvokeFunction \
  --principal <組織外アカウント ID> \
  --region ap-northeast-1
{
    "Statement": "{\"Sid\":\"cross-account-external\",\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"arn:aws:iam::<組織外アカウント ID>:root\"},\"Action\":\"lambda:InvokeFunction\",\"Resource\":\"arn:aws:lambda:ap-northeast-1:<アカウント ID>:function:lambda-1-test\"}"
}

リソースベースポリシーを確認する。

aws lambda get-policy --function-name lambda-1-test \
  --query 'Policy' --output text \
  --region ap-northeast-1 | python3 -m json.tool
{
    "Version": "2012-10-17",
    "Id": "default",
    "Statement": [
        {
            "Sid": "cross-account-external",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::<組織外アカウント ID>:root"
            },
            "Action": "lambda:InvokeFunction",
            "Resource": "arn:aws:lambda:ap-northeast-1:<アカウント ID>:function:lambda-1-test"
        }
    ]
}

4. Lambda.1 が PASSED のままであることを確認

Config ルールを手動トリガー

aws configservice start-config-rules-evaluation \
  --config-rule-names securityhub-lambda-function-public-access-prohibited-<サフィックス> \
  --region ap-northeast-1
(出力なし)

1〜2 分待ってから評価結果を確認する。

Config の評価結果確認

ResultRecordedTime がステップ 3(add-permission の実行時刻)より後であることを確認することで、組織外アカウント設定後に再評価されたことを確かめる。

aws configservice get-compliance-details-by-config-rule \
  --config-rule-name securityhub-lambda-function-public-access-prohibited-<サフィックス> \
  --query 'EvaluationResults[?EvaluationResultIdentifier.EvaluationResultQualifier.ResourceId==`lambda-1-test`].{ResourceId:EvaluationResultIdentifier.EvaluationResultQualifier.ResourceId,ComplianceType:ComplianceType,ResultRecordedTime:ResultRecordedTime}' \
  --region ap-northeast-1
[
    {
        "ResourceId": "lambda-1-test",
        "ComplianceType": "COMPLIANT",
        "ResultRecordedTime": "<add-permission 後の評価時刻>"
    }
]

組織外アカウントを設定しても、Lambda.1 の Config 評価は COMPLIANT(PASSED)のまま。パブリックアクセスではないため検出対象外であることを示す。

Security Hub finding 確認

数分待ってから確認する。

aws securityhub get-findings \
  --filters '{
    "ComplianceSecurityControlId": [{"Comparison": "EQUALS", "Value": "Lambda.1"}],
    "AwsAccountId": [{"Comparison": "EQUALS", "Value": "<アカウント ID>"}],
    "ResourceId": [{"Comparison": "EQUALS", "Value": "arn:aws:lambda:ap-northeast-1:<アカウント ID>:function:lambda-1-test"}],
    "RecordState": [{"Comparison": "EQUALS", "Value": "ACTIVE"}]
  }' \
  --query 'Findings[].{Status:Compliance.Status,ResourceId:Resources[0].Id,UpdatedAt:UpdatedAt}' \
  --region ap-northeast-1
[
    {
        "Status": "PASSED",
        "ResourceId": "arn:aws:lambda:ap-northeast-1:<アカウント ID>:function:lambda-1-test",
        "UpdatedAt": "<add-permission 後の更新時刻>"
    }
]

5. 組織内アカウントを add-permission

組織内の別アカウント(信頼ゾーン内)を Principal に指定して statement を追加する。

aws lambda add-permission \
  --function-name lambda-1-test \
  --statement-id cross-account-internal \
  --action lambda:InvokeFunction \
  --principal <組織内アカウント ID> \
  --region ap-northeast-1
{
    "Statement": "{\"Sid\":\"cross-account-internal\",\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"arn:aws:iam::<組織内アカウント ID>:root\"},\"Action\":\"lambda:InvokeFunction\",\"Resource\":\"arn:aws:lambda:ap-northeast-1:<アカウント ID>:function:lambda-1-test\"}"
}

6. Lambda.1 が PASSED のままであることを確認

Config ルールを手動トリガー

aws configservice start-config-rules-evaluation \
  --config-rule-names securityhub-lambda-function-public-access-prohibited-<サフィックス> \
  --region ap-northeast-1
(出力なし)

1〜2 分待ってから評価結果を確認する。

Config の評価結果確認

ResultRecordedTime がステップ 5(add-permission の実行時刻)より後であることを確認する。

aws configservice get-compliance-details-by-config-rule \
  --config-rule-name securityhub-lambda-function-public-access-prohibited-<サフィックス> \
  --query 'EvaluationResults[?EvaluationResultIdentifier.EvaluationResultQualifier.ResourceId==`lambda-1-test`].{ResourceId:EvaluationResultIdentifier.EvaluationResultQualifier.ResourceId,ComplianceType:ComplianceType,ResultRecordedTime:ResultRecordedTime}' \
  --region ap-northeast-1
[
    {
        "ResourceId": "lambda-1-test",
        "ComplianceType": "COMPLIANT",
        "ResultRecordedTime": "<add-permission 後の評価時刻>"
    }
]

組織内アカウントを設定しても、Lambda.1 は COMPLIANT(PASSED)のまま。パブリックアクセスではないため検出対象外である。

Security Hub finding 確認

数分待ってから確認する。

aws securityhub get-findings \
  --filters '{
    "ComplianceSecurityControlId": [{"Comparison": "EQUALS", "Value": "Lambda.1"}],
    "AwsAccountId": [{"Comparison": "EQUALS", "Value": "<アカウント ID>"}],
    "ResourceId": [{"Comparison": "EQUALS", "Value": "arn:aws:lambda:ap-northeast-1:<アカウント ID>:function:lambda-1-test"}],
    "RecordState": [{"Comparison": "EQUALS", "Value": "ACTIVE"}]
  }' \
  --query 'Findings[].{Status:Compliance.Status,ResourceId:Resources[0].Id,UpdatedAt:UpdatedAt}' \
  --region ap-northeast-1
[
    {
        "Status": "PASSED",
        "ResourceId": "arn:aws:lambda:ap-northeast-1:<アカウント ID>:function:lambda-1-test",
        "UpdatedAt": "<add-permission 後の更新時刻>"
    }
]

7. Principal: * を add-permission

ステップ 7 〜 8 の Principal: "*" 設定による FAILED 検出の詳細は CT.LAMBDA.PV.2 ステップ 3 を参照。本記事では PASSED 復帰(ステップ 9)の前提として FAILED 状態を作る。

ステップ 3・5 で追加した組織外・組織内の statement は残したまま、新たに Principal: "*" の statement のみを追加する。これにより、Lambda.1 は「Principal: * の statement があるか」のみで判定していることを確認できる。

aws lambda add-permission \
  --function-name lambda-1-test \
  --statement-id public-access \
  --action lambda:InvokeFunction \
  --principal "*" \
  --region ap-northeast-1
{
    "Statement": "{\"Sid\":\"public-access\",\"Effect\":\"Allow\",\"Principal\":\"*\",\"Action\":\"lambda:InvokeFunction\",\"Resource\":\"arn:aws:lambda:ap-northeast-1:<アカウント ID>:function:lambda-1-test\"}"
}

8. Lambda.1 FAILED を確認

Config ルールを手動トリガー

aws configservice start-config-rules-evaluation \
  --config-rule-names securityhub-lambda-function-public-access-prohibited-<サフィックス> \
  --region ap-northeast-1
(出力なし)

1〜2 分待ってから評価結果を確認する。

Config の評価結果確認

aws configservice get-compliance-details-by-config-rule \
  --config-rule-name securityhub-lambda-function-public-access-prohibited-<サフィックス> \
  --query 'EvaluationResults[?EvaluationResultIdentifier.EvaluationResultQualifier.ResourceId==`lambda-1-test`].{ResourceId:EvaluationResultIdentifier.EvaluationResultQualifier.ResourceId,ComplianceType:ComplianceType,ResultRecordedTime:ResultRecordedTime}' \
  --region ap-northeast-1
[
    {
        "ResourceId": "lambda-1-test",
        "ComplianceType": "NON_COMPLIANT",
        "ResultRecordedTime": "<add-permission 後の評価時刻>"
    }
]

Security Hub finding 確認

aws securityhub get-findings \
  --filters '{
    "ComplianceSecurityControlId": [{"Comparison": "EQUALS", "Value": "Lambda.1"}],
    "AwsAccountId": [{"Comparison": "EQUALS", "Value": "<アカウント ID>"}],
    "ResourceId": [{"Comparison": "EQUALS", "Value": "arn:aws:lambda:ap-northeast-1:<アカウント ID>:function:lambda-1-test"}],
    "RecordState": [{"Comparison": "EQUALS", "Value": "ACTIVE"}]
  }' \
  --query 'Findings[].{Status:Compliance.Status,ResourceId:Resources[0].Id,UpdatedAt:UpdatedAt}' \
  --region ap-northeast-1
[
    {
        "Status": "FAILED",
        "ResourceId": "arn:aws:lambda:ap-northeast-1:<アカウント ID>:function:lambda-1-test",
        "UpdatedAt": "<更新時刻>"
    }
]

Principal: "*" を追加したことで Lambda.1 が FAILED に変化。

9. remove-permission で PASSED に復帰することを確認

Principal: "*" の statement のみを削除し、組織外・組織内の statement は残した状態で Lambda.1 が PASSED に復帰することを確認する。これにより、Lambda.1 の検出対象がパブリックアクセスのみであり、クロスアカウントの statement が残っていても PASSED となることが確かめられる。

aws lambda remove-permission \
  --function-name lambda-1-test \
  --statement-id public-access \
  --region ap-northeast-1
(出力なし)

リソースベースポリシーの状態を確認する(組織外・組織内の statement のみ残っている)。

aws lambda get-policy --function-name lambda-1-test \
  --query 'Policy' --output text \
  --region ap-northeast-1 | python3 -m json.tool
{
    "Version": "2012-10-17",
    "Id": "default",
    "Statement": [
        {
            "Sid": "cross-account-external",
            "Effect": "Allow",
            "Principal": {"AWS": "arn:aws:iam::<組織外アカウント ID>:root"},
            "Action": "lambda:InvokeFunction",
            "Resource": "arn:aws:lambda:ap-northeast-1:<アカウント ID>:function:lambda-1-test"
        },
        {
            "Sid": "cross-account-internal",
            "Effect": "Allow",
            "Principal": {"AWS": "arn:aws:iam::<組織内アカウント ID>:root"},
            "Action": "lambda:InvokeFunction",
            "Resource": "arn:aws:lambda:ap-northeast-1:<アカウント ID>:function:lambda-1-test"
        }
    ]
}

Config ルールを手動トリガー

aws configservice start-config-rules-evaluation \
  --config-rule-names securityhub-lambda-function-public-access-prohibited-<サフィックス> \
  --region ap-northeast-1
(出力なし)

1〜2 分待ってから評価結果を確認する。

remove-permission 直後の Config トリガーでは NON_COMPLIANT のままの結果が返る場合がある(設定変更の反映ラグにより、直前の評価結果がそのまま返ることがある)。その場合は数分待ってから再度 start-config-rules-evaluation で再トリガーする。

Config の評価結果確認

aws configservice get-compliance-details-by-config-rule \
  --config-rule-name securityhub-lambda-function-public-access-prohibited-<サフィックス> \
  --query 'EvaluationResults[?EvaluationResultIdentifier.EvaluationResultQualifier.ResourceId==`lambda-1-test`].{ResourceId:EvaluationResultIdentifier.EvaluationResultQualifier.ResourceId,ComplianceType:ComplianceType,ResultRecordedTime:ResultRecordedTime}' \
  --region ap-northeast-1
[
    {
        "ResourceId": "lambda-1-test",
        "ComplianceType": "COMPLIANT",
        "ResultRecordedTime": "<remove-permission 後の評価時刻>"
    }
]

Security Hub finding 確認

aws securityhub get-findings \
  --filters '{
    "ComplianceSecurityControlId": [{"Comparison": "EQUALS", "Value": "Lambda.1"}],
    "AwsAccountId": [{"Comparison": "EQUALS", "Value": "<アカウント ID>"}],
    "ResourceId": [{"Comparison": "EQUALS", "Value": "arn:aws:lambda:ap-northeast-1:<アカウント ID>:function:lambda-1-test"}],
    "RecordState": [{"Comparison": "EQUALS", "Value": "ACTIVE"}]
  }' \
  --query 'Findings[].{Status:Compliance.Status,ResourceId:Resources[0].Id,UpdatedAt:UpdatedAt}' \
  --region ap-northeast-1
[
    {
        "Status": "PASSED",
        "ResourceId": "arn:aws:lambda:ap-northeast-1:<アカウント ID>:function:lambda-1-test",
        "UpdatedAt": "<更新時刻>"
    }
]

組織外・組織内の statement は残っているが、Principal: "*" を削除したことで Lambda.1 は PASSED に復帰。Lambda.1 の検出対象がパブリックアクセスのみであることが確認できる。

10. クリーンアップ

Lambda 関数削除

aws lambda delete-function --function-name lambda-1-test \
  --region ap-northeast-1
(出力なし)

IAM ロール削除

aws iam detach-role-policy --role-name lambda-1-test-role \
  --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
aws iam delete-role --role-name lambda-1-test-role
(出力なし)

一時ファイル削除

rm -f /tmp/lambda-trust.json /tmp/lambda_function.py /tmp/lambda-1-test.zip

Amazonアソシエイトリンク