説明
保護が必要な API 操作に呼び出し元の確認と権限検査がないと、未認証または権限のない要求を処理するおそれがあります。API Gateway REST API では、Lambda・Cognito オーソライザーや IAM 認証などを利用できます。
オーソライザーがないだけで、他の認証もないとは断定できません。意図的に公開する操作を区別し、セキュリティスキームの宣言だけでなく、対象の操作への適用も確認する必要があります。
想定される影響
- 許可されていない呼び出しが機密データや機能に届く可能性があります。
- パスごとの認証適用が不統一だと、新しい操作が意図せず公開されるおそれがあります。
対処方法
操作ごとの公開要否と必要な呼び出し権限を決め、適切なオーソライザーまたは IAM 認証を適用してください。OpenAPI を取り込む際は、セキュリティスキーム、操作の security 要件、実際の AWS 認証設定を併せて確認してください。承認済みの呼び出しは成功し、トークンがない要求や権限不足の要求は拒否されることを試験してください。
例
最初は OpenAPI セキュリティスキームの部分例、次は外部の仕様ファイルを取り込むタスクです。完全な API の info・paths・統合と認証適用の内容は省略しています。
変更前
yaml
- name: Setup AWS API Gateway
community.aws.aws_api_gateway:
swagger_dict:
{
"openapi": "3.0.0",
"components": {
"securitySchemes": {
"request_authorizer_single_stagevar": {
"type": "apiKey",
"name": "Unused",
"in": "header"
}
}
}
}
stage: production
endpoint_type: EDGE
state: present
apiKey スキームのみを宣言します。この宣言だけでは AWS オーソライザーの構成や操作への認証適用は行われません。
変更後
yaml
- name: Setup AWS API Gateway
community.aws.aws_api_gateway:
swagger_file: swaggerFile.yaml
stage: production
endpoint_type: EDGE
state: present
swaggerFile.yaml を取り込みます。ファイルを使うだけで認証が保証されるわけではないため、内容とデプロイ後の API 設定を確認してください。