このトピックでは、GKE on AWS の管理サービスとユーザー クラスタのセキュリティ認証情報をローテーションする方法について説明します。GKE on AWS のセキュリティ機能の詳細については、セキュリティをご覧ください。
始める前に
このページの手順を完了するには、GKE on AWS の構成が格納されているディレクトリへのアクセス権を付与されている必要があります。
管理サービスの証明書
このセクションでは、管理サービスの証明書をローテーションする方法について説明します。
管理認証局
このセクションでは、GKE on AWS コンポーネントの認証局(CA)署名証明書をローテーションする方法について説明します。
Management API サーバーのルート CA
API サーバーのルート CA をローテーションするには、次の手順を行います。
- GKE on AWS 構成のディレクトリに移動します。
このディレクトリは、管理サービスをインストールしたときに作成したものです。
cd anthos-aws
- テキスト エディタで
anthos-gke.status.yaml
を開きます。 - キー
certificateAuthority
のすべての値を削除します。これには、encryptedPrivateKey.kmsKeyARN
、encryptedPrivateKey.value
、encryptedPrivateKey.certificate
が含まれます。 anthos-gke aws management init
を実行してanthos-gke.status.yaml
ファイルを更新します。anthos-gke aws management init
anthos-gke aws management apply
を実行して管理サービスを更新します。anthos-gke aws management apply
anthos-aws
ディレクトリからanthos-gke
を使用して、コンテキストを管理サービスに切り替えます。cd anthos-aws anthos-gke aws management get-credentials
その他の管理 CA
このセクションでは、次のすべての CA をローテーションする方法について説明します。
- 認証 Webhook CA
- Etcd CA
- サービス アカウント署名者 CA
次のいずれかの方法でこれらの CA をローテーションできます。
anthos-gke.status.yaml
からcertificateAuthority
セクションを削除します。- GKE on AWS 構成のディレクトリに移動します。
このディレクトリは、管理サービスをインストールしたときに作成したものです。
cd anthos-aws
- テキスト エディタで
anthos-gke.status.yaml
を開きます。 - キー
certificateAuthority
のすべての値を削除します。これには、encryptedPrivateKey.kmsKeyARN
、encryptedPrivateKey.value
、encryptedPrivateKey.certificate
が含まれます。 anthos-gke aws management init
を実行してanthos-gke.status.yaml
ファイルを更新します。anthos-gke aws management init
anthos-gke aws management apply
を実行して管理サービスを更新します。anthos-gke aws management apply
- GKE on AWS 構成のディレクトリに移動します。
このディレクトリは、管理サービスをインストールしたときに作成したものです。
新しい GKE on AWS のバージョンが利用可能な場合は、GKE on AWS の管理サービスをアップグレードします。
管理サービスの EC2 インスタンスを再作成します。
anthos-aws
ディレクトリからterraform
を使用して、管理サービスの ID を取得します。 出力には、管理サービス ID が含まれます。次の例の場合、ID はcd anthos-aws terraform output cluster_id
gke-12345abc
です。terraform output cluster_id
gke-12345abc- AWS EC2 コンソールを開きます。
- [Instances] をクリックします。
cluster-id-management-0
という名前のインスタンスを探します。- [Actions] -> [Instance state] -> [terminate] を選択して、インスタンスを削除します。EC2 は、同じ EBS ボリュームを使用して、新しいインスタンスを自動的に作成します。
管理 TLS クライアント / サーバーの鍵と証明書
管理サービスの TLS クライアント / サーバーの鍵と証明書をローテーションするには、管理サービス インスタンスを再作成します。インスタンスを再作成するには、次の手順を行います。
anthos-aws
ディレクトリからterraform
を使用して、管理サービスの ID を取得します。 出力には、管理サービス ID が含まれます。次の例の場合、ID はcd anthos-aws terraform output cluster_id
gke-12345abc
です。terraform output cluster_id
gke-12345abc- AWS EC2 コンソールを開きます。
- [Instances] をクリックします。
cluster-id-management-0
という名前のインスタンスを探します。- [Actions] -> [Instance state] -> [terminate] を選択して、インスタンスを削除します。EC2 は、同じ EBS ボリュームを使用して、新しいインスタンスを自動的に作成します。
Google Cloud サービス アカウント
管理サービスのサービス アカウント
管理サービスの Google Cloud サービス アカウントをローテーションするには、次の操作を行います。
- 前提条件の手順に沿って、新しいサービス アカウントを作成し、サービス アカウント キーをダウンロードする
- GKE on AWS 構成のディレクトリに移動します。
このディレクトリは、管理サービスをインストールしたときに作成したものです。
cd anthos-aws
鍵を別のパスにダウンロードした場合は、テキスト エディタで
anthos-gke.yaml
ファイルを開きます。.spec.googleCloud.serviceAccountKeys.managementService
、.status.googleCloud.serviceAccountKeys.connectAgent
、.spec.googleCloud.serviceAccountKeys.node
の値を新しいパスに変更します。apiVersion: multicloud.cluster.gke.io/v1 kind: AWSManagementService metadata: name: management spec: googleCloud: serviceAccountKeys: managementService: MANAGEMENT_KEY_PATH connectAgent: CONNECT_KEY_PATH node: NODE_KEY_PATH ...
anthos-gke aws management init
を実行してanthos-gke.status.yaml
ファイルを更新します。anthos-gke aws management init
anthos-gke aws management apply
を実行して管理サービスを更新します。anthos-gke aws management apply
ユーザー クラスタのサービス アカウント
これらのサービス アカウントを AWSClusters と AWSNodePools に適用するには、アップグレードまたは削除してから、再作成する必要があります。
ユーザー クラスタの証明書
このセクションでは、ユーザー クラスタの証明書をローテーションする方法について説明します。
ユーザー クラスタの CA と SSH 認証鍵
ほとんどのユーザー クラスタ用の CA は、クラスタの作成時に作成されます。
ユーザー クラスタを削除すると、GKE on AWS は次の証明書をローテーションします。
- API サーバーのルート CA
- API フロント プロキシ CA
- etcd CA
- Kubernetes サービス アカウント署名者 CA
- コントロール プレーンとノードの SSH 認証鍵ペア
ユーザー クラスタの認証 Webhook CA
ユーザー クラスタの認証 Webhook CA をローテーションするには、anthos-gke.status.yaml
ファイルを編集して変更を適用します。
- GKE on AWS 構成のディレクトリに移動します。
このディレクトリは、管理サービスをインストールしたときに作成したものです。
cd anthos-aws
- テキスト エディタで
anthos-gke.status.yaml
を開きます。 - キー
certificateAuthority
のすべての値を削除します。これには、encryptedPrivateKey.kmsKeyARN
、encryptedPrivateKey.value
、encryptedPrivateKey.certificate
が含まれます。 anthos-gke aws management init
を実行してanthos-gke.status.yaml
ファイルを更新します。anthos-gke aws management init
anthos-gke aws management apply
を実行して管理サービスを更新します。anthos-gke aws management apply
ユーザー クラスタの TLS 鍵ペアと証明書
GKE on AWS は、インスタンスの作成時に TLS 鍵ペアと証明書を生成します。これらのペアをローテーションするには、コントロール プレーンとノードプールに対して次の手順を行いインスタンスを再作成します。
コントロール プレーン
anthos-aws
ディレクトリからanthos-gke
を使用して、コンテキストを管理サービスに切り替えます。cd anthos-aws anthos-gke aws management get-credentials
kubectl
を使用して、AWSCluster からコントロール プレーンの AWS EC2 ターゲット グループを取得します。env HTTPS_PROXY=http://localhost:8118 \ kubectl get awscluster cluster-name \ -o jsonpath='{.status.targetGroupName}{"\n"}'
出力には、コントロール プレーンの EC2 ターゲット グループの名前が含まれます。例:
gke-123456a7-controlplane
AWS EC2 コンソールを開きます。左側のペインで [Target Groups] を選択します。
検索バーをクリックして、ターゲット グループを探します。ターゲット グループの名前をクリックし、[Targets] をクリックします。コントロール プレーンのインスタンスの一覧が表示されます。
ターゲット グループ内の各インスタンスに対して、次の手順を行います。
インスタンスの [Instance ID] をクリックします。AWS EC2 インスタンス コンソールが表示されます。
[Instance ID] をクリックします。
[Actions] -> [Instance state] -> [terminate] を選択して、インスタンスを削除します。EC2 は、同じ EBS ボリュームを使用して、新しいインスタンスを自動的に作成します。
[Target Groups] ページに戻ります。
グループ内のすべてのインスタンスを終了したら、[Target Groups] ページに戻ります。
ページの [Registered Targets] セクションで [Status] 列を見つけます。各インスタンスの [Status] は [Healthy] になっているはずです。一部のインスタンスが正常な場合は、数分待ってから更新(
)アイコンをクリックします。ターゲット グループ内のすべてのインスタンスが正常に動作したら、次のステップに進みます。
ノードプール
ノードプールの TLS 証明書をローテーションするには:
anthos-aws
ディレクトリからanthos-gke
を使用して、コンテキストを管理サービスに切り替えます。cd anthos-aws anthos-gke aws management get-credentials
kubectl
を使用して、AWSNodePool からノードプールの AWS EC2 ターゲット グループを取得します。env HTTPS_PROXY=http://localhost:8118 \ kubectl get awsnodepool -o jsonpath='{.items[*].status.autoScalingGroupName}{"\n"}'
出力には、ノードプールの EC2 ターゲット グループの名前が含まれます。例:
gke-123456a7-nodepool-abc123
AWS EC2 コンソールを開きます。左側のペインで [Target Groups] を選択します。
検索バーをクリックして、ターゲット グループを探します。ターゲット グループの名前をクリックし、[Targets] をクリックします。コントロール プレーンのインスタンスの一覧が表示されます。
ターゲット グループ内の各インスタンスに対して、次の手順を行います。
インスタンスの [Instance ID] をクリックします。AWS EC2 インスタンス コンソールが表示されます。
[Instance ID] をクリックします。
[Actions] -> [Instance state] -> [terminate] を選択して、インスタンスを削除します。EC2 は、同じ EBS ボリュームを使用して、新しいインスタンスを自動的に作成します。
[Target Groups] ページに戻ります。
グループ内のすべてのインスタンスを終了したら、[Target Groups] ページに戻ります。
ページの [Registered Targets] セクションで [Status] 列を見つけます。各インスタンスの [Status] は [Healthy] になっているはずです。一部のインスタンスが正常な場合は、数分待ってから更新(
)アイコンをクリックします。ターゲット グループ内のすべてのインスタンスが正常に動作したら、次のステップに進みます。