やーまんぶろぐ

気が向いた時にだけ書くブログ

Amazon API Gateway のリソースポリシーでアクセスコントロール

Amazon API Gateway のリソースポリシーでアクセスコントロールできるようになりました。
Amazon API Gateway が、API のリソースポリシーをサポート

公式サンプルではAWSアカウントのホワイトリスト、IP範囲のブラックリストがあります。

他にも時間やユーザーエージェント(UA)やユーザーIDなどのキーが用意されていて、各種設定を組み合わせたアクセスコントロールが簡単に設定できます。
AWS Conditions that can be used in API Gateway Resource Policies - Amazon API Gateway

以下、UAとIP範囲のアクセスコントロールを例にメモしておきます。

UAとIP範囲のAND条件によるアクセスコントロール

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "*",
            "Resource": "arn:aws:execute-api:ap-northeast-1:XXXXXXXXXXXX:yyyyyyyyyy/*/GET/",
            "Condition": {
               "StringLike": {
                    "aws:UserAgent": "test"
                },
                "IpAddress": {
                    "aws:SourceIp": "ZZ.ZZ.ZZ.ZZ/ZZ"
                }
            }
        }
    ]
}

UAとIP範囲のOR条件によるアクセスコントロール

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "*",
            "Resource": "arn:aws:execute-api:ap-northeast-1:XXXXXXXXXXXX:yyyyyyyyyy/*/GET/",
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": "ZZ.ZZ.ZZ.ZZ/ZZ"
                }
            }
        },
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "*",
            "Resource": "arn:aws:execute-api:ap-northeast-1:XXXXXXXXXXXX:yyyyyyyyyy/*/GET/",
            "Condition": {
                "StringLike": {
                    "aws:UserAgent": "test"
                }
            }
        }
    ]
}

最後に

ステージング環境で、Webアクセスは社内からのアクセスに絞りたい、SIM利用のIoTデバイスからはUAによるアクセスに絞りたい場合は、UAとIP範囲のOR条件によるアクセスコントロールが使えそうです。

また、LBで使いたい場合は、API Gateway + NLBの構成も考えられそうです。
Amazon API Gateway でプライベート VPC とのエンドポイント統合をサポート

既存のセキュリティグループだとUAによるアクセスコントロールができないので、非常に使い勝手が良さそうです。