翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon EKS で実行されているアプリケーションの相互 TLS 認証を設定する
作成者:マヘンドラ・シッダッパ (AWS)
概要
証明書ベースの相互 Transport Layer Security (TLS) は、サーバーとクライアント間の双方向ピア認証を提供するオプションの TLS コンポーネントです。相互 TLS では、クライアントはセッションネゴシエーションプロセス中に X.509 証明書を提供する必要があります。サーバーは、この証明書を使用してクライアントを識別し、認証します。
相互 TLS は、モノのインターネット (IoT) アプリケーションの一般的な要件であり、ビジネストゥビジネスアプリケーションやオープンバンキングなどの標準に使用できます。
このパターンでは、NGINX Ingress Controller を使用して Amazon Elastic Kubernetes Service (Amazon EKS) クラスターで実行されているアプリケーションの相互 TLS を設定する方法を説明します。イングレスリソースに注釈を付けることで、NGINX イングレスコントローラーのビルトイン相互 TLS 機能を有効にできます。NGINX コントローラーの相互 TLS アノテーションについて詳しくは、Kubernetes ドキュメントの「クライアント証明書認証
重要
このパターンでは、自己署名証明書を使用します。このパターンはテストクラスターでのみ使用し、本番環境では使用しないことをお勧めします。このパターンを本番環境で使用する場合は、「AWS プライベート認証局 (AWS プライベート CA)」または既存のパブリックキーインフラストラクチャ (PKI) 標準を使用してプライベート証明書を発行できます。
前提条件と制限
前提条件
アクティブな Amazon Web Services (AWS)アカウント。
既存の アマゾン EKS クラスター。
AWS コマンドラインインターフェイス(AWS CLI) バージョン 1.7 以降。macOS、Linux、または Windows にインストールされ、設定されている。
Amazon EKS クラスターにアクセスするためにインストールして設定した kubectl コマンドラインユーティリティ。詳細については、Amazon EKS ドキュメントの「kubectl のインストール」を参照してください。
アプリケーションをテストするための既存のドメインネームシステム (DNS) 名。
機能制限
このパターンでは、自己署名証明書を使用します。このパターンはテストクラスターでのみ使用し、本番環境では使用しないことをお勧めします。
アーキテクチャ

テクノロジースタック
Amazon EKS
Amazon Route 53
kubectl
ツール
「Amazon Elastic Kubernetes Service (Amazon EKS)」は、AWS で Kubernetes を実行する際に役立ち、独自の Kubernetes コントロールプレーンまたはノードをインストールまたは維持する必要はありません。
Amazon Route 53 は、高可用性でスケーラブルな DNS Web サービスです。
「Kubectl」は、Amazon EKS クラスターを操作するために使用するコマンドラインユーティリティです。
エピック
タスク | 説明 | 必要なスキル |
---|---|---|
CA キーと証明書を生成します。 | 次のコマンドを実行して、証明機関 (CA) キーと証明書を生成します。
| DevOps エンジニア |
サーバーキーと証明書を生成し、CA 証明書で署名します。 | サーバーキーと証明書を生成し、次のコマンドを実行して CA 証明書で署名します。
重要を既存のドメイン名 | DevOps エンジニア |
クライアントキーと証明書を生成し、CA 証明書で署名します。 | クライアントキーと証明書を生成し、次のコマンドを実行して CA 証明書で署名します。
| DevOps エンジニア |
タスク | 説明 | 必要なスキル |
---|---|---|
Amazon EKS クラスターに NGINX イングレスコントローラーをデプロイします。 | 次のコマンドを使用して、NGINX イングレスコントローラをデプロイします。
| DevOps エンジニア |
NGINX Ingress Controller サービスが実行中であることを確認します。 | 以下のコマンドを使用して、NGINX イングレスコントローラサービスが実行されていることをを確認します。
重要サービスアドレスのフィールドに Network Load Balancer のドメイン名が含まれていることを確認します。 | DevOps エンジニア |
タスク | 説明 | 必要なスキル |
---|---|---|
Amazon EKS クラスターにネームスペースを作成します。 | 次のコマンドを実行して、Amazon EKS クラスターに
これにより、相互 TLS をテストするためのサンプルアプリケーションがデプロイされます。 | DevOps エンジニア |
タスク | 説明 | 必要なスキル |
---|---|---|
Kubernetes デプロイメントとサービスを mtls 名前空間に作成します。 |
次のコマンドを実行して、
| DevOps エンジニア |
Kubernetes デプロイが作成されていることを確認します。 | デプロイが作成され、1 つのポッドが使用可能になっていることを確認するには、次のコマンドを実行します。
| DevOps エンジニア |
Kubernetes サービスが作成されていることを確認します。 | 次のコマンドを実行して、Kubernetes サービスが作成されたことを確認します。
| DevOps エンジニア |
タスク | 説明 | 必要なスキル |
---|---|---|
イングレスリソースにシークレットを作成します。 | 以下のコマンドを実行して、前に作成した証明書を使用して NGINX Ingress コントローラーのシークレットを作成します。
シークレットには、サーバーを識別するためのクライアント用のサーバー証明書と、クライアント証明書を検証するためのサーバー用の CA 証明書があります。 | DevOps エンジニア |
タスク | 説明 | 必要なスキル |
---|---|---|
mtls 名前空間にイングレスリソースを作成します。 |
次のコマンドを実行して、
つまり、NGINX Ingress コントローラーはトラフィックをサンプルアプリケーションにルーティングできます。 | DevOps エンジニア |
Ingress リソースが作成されていることを確認します。 | 次のコマンドを実行して、Ingress リソースが作成されたことを確認します。
重要Ingress リソースのアドレスに、NGINX Ingress Controller 用に作成されたロードバランサーが表示されていることを確認します。 | DevOps エンジニア |
タスク | 説明 | 必要なスキル |
---|---|---|
NGINX Ingress コントローラーのロードバランサーを指す CNAME レコードを作成します。 | AWS マネジメントコンソールにサインインし、Amazon Route 53 コンソールを開いて、NGINX イングレスコントローラーのロードバランサーに 詳細については、Route 53 ドキュメントの「Route 53 コンソールを使用したレコードの作成」を参照してください。 | DevOps エンジニア |
タスク | 説明 | 必要なスキル |
---|---|---|
証明書なしで相互 TLS セットアップをテストする。 | 以下のコマンドを実行してください。
「400 必要な SSL 証明書は送信されませんでした」というエラー応答が表示されるはずです。 | DevOps エンジニア |
証明書を使用して相互 TLS セットアップをテストします。 | 以下のコマンドを実行してください。
「mTLS は動作しています」という応答が返されるはずです。 | DevOps エンジニア |