type
status
date
slug
summary
tags
category
icon
password
理論
1. API Gateway でのアクセス制御
- IAM 認証(AWS Signature):
- AWS の API Gateway では、IAM ユーザーやロールによる認証を行うことができます。IAM の権限を使って、API のリソースへのアクセスを制御できます。
- 具体的には、
execute-api:Invoke
の権限を持つ IAM ユーザーやロールに対してアクセスを許可します。
- AWS Signature:
- API Gateway へのリクエストは、AWS Signature を使用して署名されることが多いです。これにより、リクエストが正当なものであるかどうかを確認できます。
2. リクエストの追跡と分析
- AWS X-Ray:
- AWS X-Ray は、分散アプリケーションのリクエストをトレースし、パフォーマンスのボトルネックや遅延を特定するためのツールです。これを使用することで、API Gateway へのリクエストのフロー全体を可視化し、遅延の原因を特定できます。
- X-Ray は、リクエストが API Gateway を通過し、バックエンドサービスに到達する過程を追跡し、全体的なパフォーマンスを分析するのに役立ちます。
- Amazon CloudWatch:
- CloudWatch はログやメトリクスを収集し、システム全体のパフォーマンスや状態を監視するために使用されます。API Gateway のレスポンス時間やエラーなどのメトリクスを監視できます。
3. API Gateway のアクセス制御方法
- CORS 設定:
- API Gateway で CORS(クロスオリジンリソース共有)を設定することができます。これにより、異なるオリジンからのリクエストを許可または制限できます。特にブラウザでのアクセスを制御する場合に有用です。
- カスタムオーソライザー:
- Lambda 関数をカスタムオーソライザーとして使用し、リクエストに含まれるトークンや認証情報を検証できます。これにより、柔軟な認証ロジックを実装可能です。
4. 適切なサービスの選定
- API Gateway と Lambda の組み合わせ:
- AWS Lambda をバックエンドで使用する場合、API Gateway と連携してサーバーレスアーキテクチャを構築することができます。これにより、高いスケーラビリティと効率的なリソース管理が可能になります。
- API Gateway と ECS(Fargate):
- コンテナ化されたアプリケーションを Amazon ECS(Fargate)で実行し、API Gateway をフロントエンドとして使用するアーキテクチャもあります。これにより、スケーラブルで柔軟なバックエンドシステムを構築できます。
まとめ
- API Gateway でのアクセス制御は IAM 認証や CORS 設定、カスタムオーソライザーなどで行います。
- リクエストの追跡には AWS X-Ray や CloudWatch を利用し、遅延やエラーの原因を可視化します。
- 適切なサービスを選ぶことで、スケーラブルで効率的なシステムを構築できます。
これらの知識を組み合わせて、セキュアでスケーラブルな API を設計することが可能です。
実践
略
一問道場
質問 #343
ソリューションアーキテクトは、新しい Amazon API Gateway エンドポイントにアクセスできるのが、適切な権限を持つ AWS ユーザーまたはロールに限定されるようにしたいと考えています。ソリューションアーキテクトは、各リクエストのエンドツーエンドのビューを取得してリクエストの待ち時間を分析し、サービスマップを作成したいと考えています。
ソリューションアーキテクトは、API Gateway のアクセス制御をどのように設計し、リクエストの検査を行うことができますか?
A. API Gateway のメソッドで認証を AWS_IAM に設定します。その後、REST API リソースに対して IAMユーザーまたはロールに
execute-api:Invoke
権限を付与します。エンドポイントにアクセスする際に、API 呼び出し元が AWS シグネチャを使用してリクエストに署名できるようにします。AWS X-Ray を使用して、API Gateway に対するユーザーリクエストをトレースおよび分析します。B. API Gateway リソースで CORS を有効化し、
Access-Control-Allow-Origin
ヘッダーに会社のドメインだけを返すように設定します。その後、REST API リソースに対して IAM ユーザーまたはロールに execute-api:Invoke
権限を付与します。Amazon CloudWatch を使用して、API Gateway に対するユーザーリクエストをトレースおよび分析します。C. AWS Lambda 関数をカスタムオーソライザーとして作成し、API クライアントに呼び出し時にキーとシークレットを渡すよう依頼します。そして、Lambda を使用して IAM システムに対してキー/シークレットペアを検証します。AWS X-Ray を使用して、API Gateway に対するユーザーリクエストをトレースおよび分析します。
D. API Gateway 用のクライアント証明書を作成します。この証明書をエンドポイントにアクセスする必要がある AWS ユーザーおよびロールに配布します。エンドポイントにアクセスする際に、API 呼び出し元がクライアント証明書を渡せるようにします。Amazon CloudWatch を使用して、API Gateway に対するユーザーリクエストをトレースおよび分析します。
解説
この問題の主なポイントは、以下の2つの要件を満たす解決策を選択することです:
- API Gateway のアクセス制御
API Gateway に対するアクセスを、適切な権限を持つユーザーまたはロールのみに制限する方法を設計します。これには、認証・認可の仕組みが必要です。
- リクエストの追跡と分析
各リクエストのエンドツーエンドの視点を取得し、リクエストの遅延を分析したり、サービスマップを生成することで、システムの依存関係とパフォーマンスを可視化します。
各選択肢の解説
A. AWS_IAM 認証 + AWS X-Ray の使用
- アクセス制御: API Gateway のメソッドに AWS_IAM 認証を設定することで、AWS の IAM ユーザーまたはロールのアクセスを制限します。
- IAM ユーザー/ロールに
execute-api:Invoke
権限を付与することで、API の実行を許可します。 - API 呼び出し元はリクエストに AWS シグネチャ(AWS Signature)を付与する必要があります。
- リクエストの追跡: AWS X-Ray を使用して、API Gateway に対するリクエストをトレースし、エンドツーエンドでリクエストを可視化します。
- 評価: IAM 認証と X-Ray の組み合わせにより、アクセス制御とリクエスト追跡の両方を実現する最適な選択肢です。
B. CORS 設定 + CloudWatch の使用
- アクセス制御: CORS(クロスオリジンリソース共有)を有効化し、特定のオリジン(例: 会社のドメイン)のみリソースにアクセス可能にします。IAM ユーザー/ロールに
execute-api:Invoke
権限を付与します。
- リクエストの追跡: Amazon CloudWatch を使用してリクエストをトレースしますが、CloudWatch は X-Ray のような詳細なサービスマップや依存関係分析を提供しません。
- 評価: CORS はオリジン制御を提供しますが、認証の仕組みが不十分であり、X-Ray の代わりに CloudWatch を使用するため、追跡機能が限定的です。
C. カスタムオーソライザー(Lambda 関数) + AWS X-Ray の使用
- アクセス制御: Lambda をカスタムオーソライザーとして使用し、API クライアントが渡すキーとシークレットを検証します。
- カスタムオーソライザーは柔軟性が高いですが、IAM 認証より設定や管理が複雑になります。
- リクエストの追跡: AWS X-Ray を使用して、リクエストをトレースします。
- 評価: カスタムオーソライザーは柔軟性がありますが、IAM 認証を使ったよりシンプルなソリューションと比較すると複雑で、運用負荷が増します。
D. クライアント証明書 + CloudWatch の使用
- アクセス制御: API Gateway のクライアント証明書を使用し、エンドポイントへのアクセスを制御します。証明書をユーザーやロールに配布する必要があります。
- リクエストの追跡: Amazon CloudWatch を使用してリクエストをトレースします。
- 評価: クライアント証明書は認証手段として有効ですが、証明書の管理や配布が煩雑です。また、CloudWatch は X-Ray のような詳細な追跡機能を提供しません。
結論
正解: A
理由:
- アクセス制御において、IAM 認証を使用することで、AWS の標準的な認証機能を活用できます。これは、設定が簡単で安全性が高いです。
- リクエストの追跡において、AWS X-Ray はサービスマップの作成や遅延分析に最適なツールです。
- 全体的に、シンプルで効率的なソリューションを提供します。
リクエストの流れを簡単に説明します:
1. クライアントがリクエストを送信
- クライアント(ブラウザやアプリケーション)が API Gateway のエンドポイントにリクエストを送ります。
- リクエストには AWS Signature(IAM 認証情報) を含める必要があります。
2. API Gateway が認証を実施
- API Gateway はリクエストを受信すると、以下を確認します:
- 認証情報の有効性(IAM ポリシーで権限があるか)。
- エンドポイントへのアクセス権限があるか(
execute-api:Invoke
)。
3. 認証後、リクエストを処理
- 認証が成功すると、API Gateway はバックエンドサービス(例えば Lambda や EC2)にリクエストを転送します。
- API Gateway はリクエスト処理の詳細(遅延、レスポンス時間など)を収集します。
4. AWS X-Ray でリクエストを追跡
- API Gateway はリクエストの情報を AWS X-Ray に送信します:
- クライアントから API Gateway への通信時間。
- API Gateway からバックエンドへの通信時間。
- 全体の遅延やエラーの原因。
5. クライアントにレスポンスを返す
- バックエンドがリクエストを処理し、API Gateway を通じてクライアントにレスポンスを返します。
- AWS X-Ray にはレスポンスに関するデータも記録されます。
まとめたリクエストの流れ
- クライアント → API Gateway(認証チェック)。
- API Gateway → バックエンド(リクエスト処理)。
- バックエンド → API Gateway → クライアント(レスポンス返却)。
- X-Ray でリクエスト全体の追跡と分析。
この流れを通じて、セキュアなアクセス制御とリクエストの詳細な可視化が可能になります。
- 作者:みなみ
- 链接:https://tangly1024.com/資格勉強/177d7ae8-88e2-80f9-bffb-db2bff36a8d6
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章