CloudFront による相互 TLS 認証 (Viewer mTLS)
相互 TLS 認証 (相互 Transport Layer Security 認証 - mTLS) は、双方向証明書ベースの認証を要求することで標準 TLS 認証を拡張するセキュリティプロトコルです。クライアントとサーバーの両方が、安全な接続を確立する前に ID を証明する必要があります。相互 TLS を使用すると、信頼される TLS 証明書を提示するクライアントのみが CloudFront ディストリビューションにアクセスできるようになります。
仕組み
標準の TLS ハンドシェイクでは、サーバーのみがクライアントに ID を証明する証明書を提示します。相互 TLS では、認証プロセスは双方向になります。クライアントが CloudFront ディストリビューションに接続しようとすると、CloudFront は TLS ハンドシェイク中にクライアント証明書をリクエストします。クライアントは、安全な接続を確立する前に、CloudFront が設定されたトラストストアに対して検証する有効な X.509 証明書を提示する必要があります。
CloudFront は、AWS エッジロケーションでこの証明書の検証を実行し、CloudFront のグローバルパフォーマンスの利点を維持しながら、オリジンサーバーから認証の複雑さをオフロードします。mTLS は 3 つのモードで設定できます。
-
必須モード (デフォルト) - CloudFront はクライアント証明書を信頼ストアと照合します。検証が失敗するか、証明書が提示されない場合、CloudFront は接続を拒否します。すべてのクライアントが有効な証明書で認証する必要がある場合は、必須モードを使用します。
-
オプションモード - CloudFront はクライアント証明書が提示された場合にクライアント証明書を検証しますが、証明書なしでの接続も許可します。承認の決定を行うために、証明書メタデータはオリジンの接続関数および HTTP ヘッダーで使用できます。認証されたクライアントと認証されていないクライアントの両方をサポートする場合は、オプションモードを使用します。
-
パススルーモード - CloudFront は、信頼ストアに対してクライアント証明書を検証しません。CloudFront は、クライアントが対応するプライベートキーを所有していることのみを検証します。証明書をオリジンの HTTP ヘッダーとしてオリジンに転送し、オリジンが検証を実行します。信頼ストアは必要なく、キャッシュも発生しません。オリジンに既存の mTLS 実装がある場合は、パススルーモードを使用します。
ユースケース
CloudFront による相互 TLS 認証は、従来の認証方法では不足していたいくつかの重要なセキュリティシナリオに対処します。
-
コンテンツキャッシュによるデバイス認証 - ファームウェアの更新、ゲームのダウンロード、または内部リソースへのアクセスを許可する前に、ゲームコンソール、IoT デバイス、または企業ハードウェアを認証することができます。各デバイスには、CloudFront のキャッシュ機能のメリットを享受しながら、その信頼性を証明する一意の証明書が含まれています。
-
API-to-API 認証 - 信頼されるビジネスパートナー、支払いシステム、マイクロサービス間のマシン間通信を保護できます。証明書ベースの認証により、自動データ交換に強力な ID 検証を提供しながら、共有シークレットや API キーが不要になります。