418-AWS SAP AWS 「理論・実践・一問道場」JWT

 

理論

notion image

1. Amazon API Gateway と認証

  • API Gatewayでは、認証を強制するために、JWT(JSON Web Token)を使用する認証方式がよく利用されます。JWTは、ユーザーが認証されると、トークンを発行し、そのトークンをAPI Gatewayに渡すことで認証が完了します。
  • API Gatewayの認証方法
    • JWT認証(カスタムオーソライザー):外部のIDプロバイダー(OIDC、Cognitoなど)と連携し、トークンを検証します。
    • IAMポリシー:リクエストをIAM認証を通じて制御します。
    • Amazon Cognito:Cognitoユーザープールを使用して、アプリケーションのユーザー管理を行います。

2. Amazon Application Load Balancer(ALB)と認証

  • ALBは、ロードバランサーとしての機能を提供しますが、デフォルトでは認証を強制しません。ALBに認証を追加するためには、ALBをIDプロバイダー(例えば、Cognito、OIDC)と統合して認証を行う必要があります。
  • ALBの認証設定
    • ALBは、AWS CognitoOIDCと連携して認証を行うことができます。これにより、ALBが受け付けるリクエストに認証を要求し、未認証のリクエストをブロックできます。

3. Amazon CloudFrontと署名付きURL

  • CloudFrontはコンテンツ配信ネットワーク(CDN)として、リクエストに対する認証を行うために署名付きURL署名付きクッキーを使用することができます。
  • 署名付きURLは、特定のリソースへのアクセスを制限するために使用され、期限付きでアクセスを許可することができますが、これ自体は認証ではなく、リクエストのアクセス許可を制御する手段です。

4. AWS WAFとセキュリティ

  • AWS WAF(Web Application Firewall)は、ウェブアプリケーションに対するリクエストをフィルタリングするために使用しますが、WAF自体には認証機能はありません。WAFは主に、IP制限やSQLインジェクション攻撃、クロスサイトスクリプティング(XSS)などからの防御に役立ちます。
  • WAFは、認証されていないリクエストをフィルタリングすることはできませんが、ALBやAPI Gatewayで認証を行った後、WAFで不正なリクエストをブロックすることは可能です。

5. AWS CloudTrailと監査

  • AWS CloudTrailは、AWSアカウント内で発生したAPIコールの監査ログを記録するサービスです。CloudTrailはリクエストの追跡や監査に便利ですが、リアルタイムで認証をブロックすることはできません。CloudTrailのログを使用して、後から問題を特定することは可能ですが、認証の強制にはAPI GatewayやALBでの認証機能が必要です。

まとめ

  • API GatewayALBの認証を強制するには、API GatewayでJWTやCognitoを使った認証を設定し、ALBを適切なIDプロバイダーと統合して認証を行う必要があります。
  • CloudFrontの署名付きURLはアクセス制限には使えますが、認証そのものには使えません。
  • AWS WAFは、認証後の不正リクエストをブロックするのに有用ですが、認証を強制する機能はありません。
  • CloudTrailは監査ログの管理に有用ですが、認証のブロックには直接関与しません。
このように、AWSでは様々なセキュリティツールや機能を組み合わせて、認証やアクセス制御を行うことが求められます。

実践

一問道場

質問 #418
ある企業は、AWS上でのWebアプリケーションのセキュリティを強化する必要があります。アプリケーションは、2つのカスタムオリジンを使用してAmazon CloudFrontを利用しています。最初のカスタムオリジンはAmazon API Gateway HTTP APIへのリクエストをルーティングし、2番目のカスタムオリジンはトラフィックをアプリケーションロードバランサー(ALB)にルーティングします。アプリケーションは、ユーザー管理のためにOpenID Connect (OIDC)アイデンティティプロバイダー(IdP)と統合しています。セキュリティ監査では、JSON Web Token(JWT)認証がAPIへのアクセスを提供していることが確認されました。また、セキュリティ監査では、ALBが認証されていないユーザーからのリクエストを受け入れていることも判明しました。
ソリューションアーキテクトは、すべてのバックエンドサービスが認証されたユーザーにのみ応答するようにするためのソリューションを設計しなければなりません。
この要件を満たすソリューションはどれですか?
A. ALBをIdPと統合し、認証と認可を強制するようにALBを構成します。認証されたユーザーのみがバックエンドサービスにアクセスできるようにします。
B. CloudFrontの設定を変更して署名付きURLを使用します。バックエンドサービスへのアクセスを許可する寛容な署名ポリシーを実装します。
C. ALBレベルで認証されていないリクエストをフィルタリングするAWS WAFウェブACLを作成します。認証されたトラフィックのみがバックエンドサービスに到達するようにします。
D. AWS CloudTrailを有効にして、ALBに来るすべてのリクエストをログに記録します。AWS Lambda関数を作成してログを解析し、認証されていないユーザーからのリクエストをブロックします。

解説

問題の要点

  • 企業がAWS上でWebアプリケーションを運用しており、Amazon CloudFrontを使って2つのカスタムオリジンを設定しています。
      1. API Gateway HTTP API(カスタムオリジン1)
      1. Application Load Balancer (ALB)(カスタムオリジン2)
  • アプリケーションは、**OpenID Connect (OIDC)**を使ってユーザー認証を行っています。
  • セキュリティ監査の結果:
    • API GatewayはJWT認証を使って認証されたユーザーのみアクセスを許可している。
    • しかし、ALBは認証されていないユーザーからのリクエストも受け入れてしまっている。

問題文で求められていること

  • バックエンドサービス(API GatewayとALB)が、認証されたユーザーのみに応答するようにする必要がある。
  • ALBが認証されていないユーザーからのリクエストを受け入れないようにする必要があります。

各選択肢の解説

  1. A. ALBをIdPと統合し、認証と認可を強制するようにALBを構成
      • 正しい選択肢です。ALBはデフォルトでは認証を強制しませんが、IdPと統合して認証と認可を実施することが可能です。これにより、ALBは認証されたユーザーからのみリクエストを受け入れるようになります。この方法が最も適切で、要件を満たします。
  1. B. CloudFrontの設定を変更して署名付きURLを使用
      • 署名付きURLは、CloudFront経由でアクセスを制御するために使用できますが、この方法では認証の強制ができません。署名付きURLは、あくまでURLアクセスの有効期限を制御するもので、ユーザー認証を強制するものではないため、問題の要件を満たしません。
  1. C. AWS WAFウェブACLを使用してALBレベルで認証されていないリクエストをフィルタリング
      • 誤りです。AWS WAF(Web Application Firewall)は、リクエストをフィルタリングするために使いますが、WAF自体に「認証」の機能はありません。WAFは、特定のIPアドレスやパターンに基づいてリクエストをブロックできますが、認証に関する設定はAPI GatewayやALBで行うべきです。
  1. D. AWS CloudTrailを有効にして、ALBに来るリクエストをログに記録し、Lambdaで解析して認証されていないリクエストをブロック
      • CloudTrailはAPIコールのログを記録するツールですが、リクエストの実行時に認証をブロックするわけではありません。CloudTrailとLambdaで後から分析することはできますが、リアルタイムでリクエストを防ぐためには適切な認証機能がALBまたはAPI Gatewayに必要です。したがって、実際の問題には不十分な方法です。

結論

最も適切な解決策はAです。ALBに認証を統合することで、認証されたユーザーだけがバックエンドサービスにアクセスできるようになります。この方法が要件に最も合致します。
419-AWS SAP AWS 「理論・実践・一問道場」AWS Security Hub417-AWS SAP AWS 「理論・実践・一問道場」S3漏洩
Loading...
minami
minami
みなみの成長 🐝
Announcement

🎉 ブログへようこそ 🎉

名前: みなみ一人会社
性別:
国籍: China 🇨🇳
政治スタンス: 民主主義支持者
完全独学で基本情報技術者をはじめ、32個の資格を仕事をしながら取得。
現在はIT会社で技術担当として働きながら、ブログ執筆や学習支援にも取り組んでいます。
独学で合格できる学習法や勉強法、試験対策を発信中!

📚 発信内容

  • 💻 IT・システム開発
  • 🏠 不動産 × 宅建士
  • 🎓 MBA 学習記録