API Gateway でプライベート API 用の VPC エンドポイントポリシーを使用する
プライベート API のセキュリティを向上させるには、VPC エンドポイントポリシーを作成できます。VPC エンドポイントポリシーは、VPC エンドポイントにアタッチする IAM リソースポリシーです。詳細については、「VPC エンドポイントによるサービスのアクセスコントロール」を参照してください。
VPC エンドポイントポリシーを作成して、以下のタスクを実行できます。
特定の組織やリソースにのみ、VPC エンドポイントにアクセスして API を呼び出すことを許可します。
API へのトラフィックを制御するために、セッションベースやロールベースのポリシーは使用しないで、単一のポリシーを使用します。
オンプレミスから AWS に移行する際に、アプリケーションのセキュリティ境界を厳しくします。
VPC エンドポイントポリシーに関する考慮事項
VPC エンドポイントポリシーに関する考慮事項は、以下のとおりです。
-
呼び出し元の ID は、
Authorization
ヘッダー値に基づいて評価されます。authorizationType
によっては、これによって403 IncompleteSignatureException
または403 InvalidSignatureException
エラーが発生する可能性があります。次の表は、各authorizationType
のAuthorization
ヘッダー値を示しています。 特定の IAM プリンシパルへのアクセスをポリシーで制限する場合は (
arn:aws:iam::account-id:role/developer
など)、API のメソッドのauthorizationType
をAWS_IAM
またはNONE
に設定する必要があります。メソッドのauthorizationType
を設定する方法の詳細については、「API Gateway の REST API のメソッド」を参照してください。-
VPC エンドポイントポリシーは、API Gateway リソースポリシーと一緒に使用できます。API Gateway リソースポリシーは、どのプリンシパルが API にアクセスできるかを指定します。エンドポイントポリシーは、誰が VPC にアクセスできるか、どの API を VPC エンドポイントから呼び出せるかを指定します。プライベート API にはリソースポリシーが必要ですが、カスタム VPC エンドポイントポリシーを作成する必要はありません。
VPC エンドポイントポリシーの例
Amazon API Gateway で Amazon Virtual Private Cloud エンドポイントポリシーを作成し、以下を指定できます。
-
アクションを実行できるプリンシパル。
-
実行可能なアクション。
-
自身に対してアクションを実行できたリソース。
VPC エンドポイントにポリシーをアタッチするには 、VPC コンソールを使用する必要があります。詳細については、「VPC エンドポイントによるサービスのアクセスコントロール」を参照してください。
例 1: 2 つの API へのアクセスを許可する VPC エンドポイントポリシー
次のポリシー例では、ポリシーが関連付けられている VPC エンドポイントを経由して 2 つの特定の API へのアクセスを許可しています。
{ "Statement": [ { "Principal": "*", "Action": [ "execute-api:Invoke" ], "Effect": "Allow", "Resource": [ "arn:aws:execute-api:
us-east-1
:123412341234
:a1b2c3d4e5
/*", "arn:aws:execute-api:us-east-1
:123412341234
:aaaaa11111
/*" ] } ] }
例 2: GET メソッドへのアクセスを許可する VPC エンドポイントポリシー
次のポリシー例では、ポリシーが関連付けられている VPC エンドポイントを経由して特定の API のGET
メソッドへのアクセスを許可しています。
{ "Statement": [ { "Principal": "*", "Action": [ "execute-api:Invoke" ], "Effect": "Allow", "Resource": [ "arn:aws:execute-api:
us-east-1
:123412341234
:a1b2c3d4e5
/stageName
/GET/*" ] } ] }
例 3: 特定の API への特定のユーザーアクセスを許可する VPC エンドポイントポリシー
次のポリシー例では、ポリシーが関連付けられている VPC エンドポイントを経由して特定の API への特定のユーザーアクセスを許可しています。
この場合、特定の IAM プリンシパルへのアクセスをポリシーで制限するため、メソッドの authorizationType
を AWS_IAM
または NONE
に設定する必要があります。
{ "Statement": [ { "Principal": { "AWS": [ "arn:aws:iam::123412341234:user/
MyUser
" ] }, "Action": [ "execute-api:Invoke" ], "Effect": "Allow", "Resource": [ "arn:aws:execute-api:us-east-1
:123412341234
:a1b2c3d4e5
/*" ] } ] }