クラスタ資格証明のローテーション

Kubernetes Engine (OKE)を使用して作成したクラスタの資格証明をローテーションする方法を確認します。

ノート

管理対象ノードを持つクラスタ、および自己管理ノードを持つクラスタに対して資格証明をローテーションできます。仮想ノードを持つクラスタでは、資格証明のローテーションはまだサポートされていません。

クラスタとの間でセキュアなTLS (以前のSSL)通信を可能にするために、Kubernetesは認証にPKI (公開キー・インフラストラクチャ)証明書を使用します。PKI証明書およびKubernetesクラスタの詳細は、KubernetesドキュメントのPKI証明書および要件を参照してください。

Kubernetesエンジンで作成するクラスタには、クラスタ、etcdコンポーネントおよびフロント・プロキシ・コンポーネントのPKIルートCA (認証局)と秘密キーがあります。これらのルートCAは、クラスタで使用される証明書および秘密キーに署名するために使用されます。クラスタで使用されるルートCA、署名付き証明書および秘密キーは、まとめてクラスタ資格証明と呼ばれます。

Kubernetesエンジンで作成したクラスタでは、ルートCAは5年後に失効します。クラスタの使用を続行するには、5年間の終了前にクラスタ資格証明を変更(またはローテーション)する必要があります。さらに、組織には、クラスタ資格証明をより頻繁に(場合によっては、はるかに頻繁に)ローテーションする必要があるセキュリティ・ガイドラインおよびポリシーが設定されている場合があります。今後のクラスタ資格証明の有効期限を通知するメッセージがコンソールに表示されます。コンソール、CLIおよびAPIを使用して、クラスタ資格証明の期限が切れるタイミングを確認することもできます。

クラスタ資格証明をローテーションする場合は、以前の資格証明を使用してKubernetes APIと通信していたKubernetes APIクライアントを更新する必要があります。このようなKubernetes APIクライアントには、kubeconfigファイルと、Kubernetes APIと直接通信するポッドが含まれます。

ノート

クラスタ資格証明のローテーションはいつでも開始できますが、資格証明のローテーションは資格証明の期限切れ前に開始する必要があります。

サービスの中断を回避するために、資格証明の有効期限が切れる90日前にクラスタ資格証明のローテーションを開始していない場合、Kubernetes Engineはクラスタ資格証明を自動的にローテーションしようとします。ただし、クラスタ資格証明の自動ローテーションに依存するのではなく、クラスタ資格証明を自分でローテーションすることを強くお薦めします。詳細は、自動クラスタ資格証明ローテーションを参照してください。

クラスタ資格証明のローテーションは、次の3ステップのプロセスです。

  • ステップ1「資格証明のローテーションの開始」フェーズ:資格証明のローテーションの開始フェーズ中に、新しいルートCA、秘密キーおよび証明書が作成されます。資格証明ローテーションの開始フェーズはいつでも開始できますが、資格証明の有効期限が切れる前に資格証明ローテーションを開始する必要があります。資格証明の期限切れ前に資格証明のローテーションを開始すると、サービスの中断も回避されます。

    資格証明ローテーションの開始フェーズを開始する場合は、資格証明ローテーションの完了フェーズが自動的に開始される前の遅延期間の長さを明示的に指定します。遅延期間を使用すると、Kubernetes APIクライアントを更新できます(ステップ2)。遅延期間中、レガシー資格証明と新しい資格証明の両方が、クラスタとの間でセキュアな通信を提供します。指定する遅延期間は、1日以上90日以下にする必要があります。新しい資格証明が24時間以上経過していて、ステップ2を正常に完了している場合、遅延期間の終了前に資格証明ローテーションの完了フェーズを手動で開始できます。

    ステップ2は、新しいルートCA、秘密キーおよび証明書が作成されるまで起動しないでください。

    ノート

    CLIまたはAPIを使用して資格証明のローテーションの開始フェーズを開始する場合は、遅延期間の長さをISO 8601の期間形式で指定します。例:
    • 5日を指定するには、P5Dを使用します
    • 5日と5時間を指定するには、P5DT5Hを使用します。
    • P5DT5H5Mを使用して、5日、5時間および5分を指定します

    ISO 8601の期間書式の詳細は、オンラインで検索してください。

  • ステップ2、Kubernetes APIクライアントの更新:新しいルートCA、秘密キーおよび証明書が作成され、指定した遅延期間内(1日以内、90日以内):
    • 新しい資格証明とレガシー資格証明の両方を使用してクラスタにアクセスできるように、新しいkubeconfigファイルを設定します。
    • Kubernetes API Serverと直接通信するポッドをホストしているワーカー・ノードを再作成または再起動します(またはワーカー・ノードへの中断を回避するには、ポッド自体を再起動します)。

    新しいkubeconfigファイルを設定し、ワーカー・ノードを再作成または再起動する(または単にポッドを再起動する)まで、ステップ3を開始しないでください。

  • ステップ3「資格証明ローテーションの完了」フェーズの開始:ステップ2を終了し、指定した遅延期間(1日以内、90日以内)内に、資格証明ローテーションの完了フェーズを手動で開始できます。資格証明ローテーションの完了フェーズでは、レガシー・ルートCA、秘密キーおよび証明書がリタイアされ、削除されます。資格証明ローテーションの開始フェーズを開始してから24時間以内に、ステップ2を完了した後にのみ、資格証明ローテーションの完了フェーズを開始します。新しい資格証明が24時間以上経過している場合は、準備ができたらすぐに資格証明ローテーションの完了フェーズを開始できます。

    指定した遅延期間(1日以下、90日以下)に資格証明ローテーションの完了フェーズを手動で開始しない場合、資格証明ローテーションの完了フェーズは遅延期間の終了時に自動的に開始されます。

    資格証明のローテーションの完了フェーズが完了したら、ステップ2で作成したkubeconfigファイル(レガシー資格証明と新しい資格証明の両方を含む)を、新しい資格証明のみを含む新しいkubeconfigファイルに置き換えることをお薦めします。

資格証明ローテーションの開始フェーズと資格証明ローテーションの完了フェーズは、個別の作業リクエストとして生成されます。資格証明ローテーションの開始フェーズおよび資格証明ローテーションの完了フェーズの進行状況を追跡するには、対応する作業リクエストのステータスを表示します。作業リクエストの表示を参照してください。

クラスタ資格証明は、コンソール、CLIおよびAPIを使用してローテーションできます。

クラスタ資格証明をローテーションする場合は、次の点に注意してください。

  • 資格証明のローテーションは、Kubernetesバージョン1.20以降を実行しているクラスタでサポートされています。
  • クラスタ・コントロール・プレーンでKubernetesバージョンをアップグレードするだけで、資格証明はローテーションされません。資格証明のローテーション・プロセスのすべてのステップを完了する必要があります。
  • 資格証明ローテーションの開始フェーズおよび資格証明ローテーションの完了フェーズは、クラスタ内のすべてのワーカー・ノードのステータスがREADYの場合にのみ開始できます。資格証明のローテーション中に1つ以上のワーカー・ノードのステータスがNOT READYに変更されると、資格証明のローテーション操作は最大24時間一時停止し、すべてのノードが再びREADYのステータスになるのを待機してから再開します。1つ以上のワーカー・ノードのステータスが24時間後にNOT READYのままの場合、資格証明のローテーション操作はタイムアウトします。
  • 資格証明ローテーションの開始フェーズまたは資格証明ローテーションの完了フェーズがなんらかの理由で失敗した場合、レガシー資格証明は引き続き機能し、期限切れになるまでリタイアされません。
  • 指定した遅延期間内に資格証明ローテーションの完了フェーズを手動で開始しない場合(1日以下、90日以下)、資格証明ローテーションの完了フェーズが自動的に開始されます。遅延期間の終了前にKubernetes APIクライアントを更新しなかった場合、クラスタはサービスの中断を経験します。
  • 資格証明のローテーションは、管理対象ノードを持つクラスタ、および自己管理ノードを持つクラスタでサポートされます。仮想ノードを持つクラスタでは、資格証明のローテーションはまだサポートされていません。

クラスタ資格証明のローテーションに必要なIAMポリシー

クラスタ資格証明をローテーションするには、資格証明をローテーションするクラスタを管理する権限が付与されているグループ、またはテナンシの管理者グループに属している必要があります。

クラスタ資格証明の自動ローテーション

Kubernetes Engineは、Kubernetes環境を監視して、有効期限に近づいている資格証明を持つクラスタを識別します。Kubernetes Engineが、90日以内に期限切れになり、ローテーションを開始していない資格証明を持つクラスタを検出すると、Kubernetes Engineは、サービスの中断を回避するために、クラスタの資格証明を自動的にローテーションしようとします。ただし、Kubernetes Engineを使用してクラスタ資格証明を自動的にローテーションするのではなく、クラスタ資格証明を自分でローテーションすることを強くお薦めします。

Kubernetes Engineは、クラスタで実行されているKubernetesのバージョンに関係なく、クラスタ資格証明を自動的にローテーションします。クラスタ資格証明の手動ローテーションとは異なり、クラスタ資格証明の自動ローテーションでは、クラスタでKubernetesバージョン1.20以降を実行する必要はありません。

また、クラスタ資格証明の手動ローテーションとは異なり、Kubernetes Engineは、クラスタ内のワーカー・ノードのステータスに関係なく、クラスタ資格証明を自動的にローテーションします。クラスタ資格証明の自動ローテーションでは、資格証明ローテーションの開始フェーズまたは資格証明の完了フェーズ中にワーカー・ノードのステータスがREADYになる必要はありません。

Kubernetes Engineによって資格証明ローテーションの開始フェーズが自動的に開始されると、クラスタ資格証明の自動ローテーションが開始されたことが通知されます。資格証明ローテーションの開始フェーズでは、新しいルートCA、秘密キーおよび証明書が作成されます。資格証明フェーズの開始が完了すると、次のようになります。

  • クラスタ資格証明がまだ期限切れになっていない場合、Kubernetes Engineは資格証明のローテーションの完了フェーズを、資格証明の有効期限の3日前に開始するようにスケジュールします。ステップ3「完全な資格証明ローテーションの開始」(サービスの中断を回避するために、最初にステップ2「Kubernetes APIクライアントの更新」を完了)を完了すると、必要に応じて、資格証明ローテーションの完了資格証明ローテーション・フェーズを手動で開始できます。
  • クラスタ資格証明がすでに期限切れになっているか、3日以内に期限切れになる場合、Kubernetes Engineは資格証明の完全なローテーション・フェーズをすぐに開始します。

資格証明の完了フェーズが開始される前に、サービスの中断を回避するために、Kubernetes APIクライアントを次のように更新する必要があります:

  • 新しい資格証明とレガシー資格証明の両方を使用してクラスタにアクセスできるように、新しいkubeconfigファイルを設定します。
  • Kubernetes API Serverと直接通信するポッドをホストしているワーカー・ノードを再作成または再起動します(またはワーカー・ノードへの中断を回避するには、ポッド自体を再起動します)。

クラスタ資格証明がすでに失効しているため、Kubernetesエンジンが資格証明ローテーションの完了フェーズをすぐに開始する場合、レガシー資格証明がリタイアされる前にKubernetes APIクライアントを更新する機会がありません。その結果、新しい資格証明を使用してクラスタにアクセスできるように新しいkubeconfigファイルを設定し、ワーカー・ノードを再作成または再起動(またはポッドを再起動)するまで、クラスタでサービスの中断が発生します。

コンソールの使用

クラスタ資格証明が期限切れになる時期を確認するには

  1. ナビゲーション・メニューを開き、「開発者サービス」をクリックします。「コンテナとアーティファクト」で、「Kubernetesクラスタ(OKE)」をクリックします。
  2. 作業する権限があるコンパートメントを選択します。
  3. 「クラスタ・リスト」ページで、資格証明の有効期限を確認するクラスタの名前をクリックします。
  4. 「クラスタ」ページで、「クラスタ資格証明の有効期限: 」ラベルの横にある日付を確認します。

ステップ1: 資格証明ローテーションの開始フェーズの開始

  1. ナビゲーション・メニューを開き、「開発者サービス」をクリックします。「コンテナとアーティファクト」で、「Kubernetesクラスタ(OKE)」をクリックします。
  2. 作業する権限があるコンパートメントを選択します。
  3. 「クラスタ・リスト」ページで、資格証明をローテーションするクラスタの名前をクリックします。
  4. 「クラスタ」ページで、「クラスタ資格証明の有効期限: 」ラベルの横にある「ローテーションの開始」をクリックします。
  5. 「資格証明ローテーションの開始」ダイアログで、資格証明ローテーションの完了フェーズの自動開始を遅延する時間を指定します。指定する遅延期間は、次のとおりです。
    • 資格証明ローテーションの開始フェーズを開始してから少なくとも24時間後
    • 資格証明ローテーションの開始フェーズを開始してから90日以内
  6. 「開始」をクリックして、資格証明のローテーションの開始フェーズを開始します。
  7. 資格証明ローテーションの開始作業リクエストの進行状況を表示するには、「リソース」「作業リクエスト」をクリックします。
  8. 資格証明ローテーションの開始作業リクエストのステータスが「完了」の場合のみ、Kubernetes APIクライアントの更新に進みます(ステップ2: Kubernetes APIクライアントの更新を参照)。

ステップ2: Kubernetes APIクライアントの更新

資格証明ローテーションの開始作業リクエストのステータスが「完了」の場合:

  1. oci ce cluster create-kubeconfigコマンドを使用して、新しい資格証明を使用してクラスタにアクセスするための新しいkubeconfigファイルを設定します(クラスタ・アクセスの設定を参照)。

    kubeconfigファイルには、新しい資格証明とレガシー資格証明の両方が含まれています。

  2. Kubernetes API Serverと直接通信するポッドをホストしているワーカー・ノードを再作成または再起動します(またはワーカー・ノードへの中断を回避するには、ポッド自体を再起動します):
    • ワーカー・ノードを再作成または再起動します。
      • ノード・プールをスケール・ダウンせずにワーカー・ノードを削除して、ワーカー・ノードを再作成します。削除されたワーカー・ノードを置き換える新しいワーカー・ノードが作成されます。「ワーカー・ノードの削除」を参照してください。
      • ワーカー・ノードを再起動します。インスタンスの再起動を参照してください。
    • Kubernetes APIサーバーと直接通信するクラスタで実行されているポッドを再起動します。
  3. 新しいkubeconfigファイルを設定し、ワーカー・ノードまたはポッドを再作成または再起動した場合のみ、資格証明のローテーションを完了します(ステップ3: 資格証明のローテーションの完了フェーズの開始を参照)。

ステップ3: 資格証明の完全なローテーション・フェーズの開始

資格証明ローテーションの開始フェーズを開始するときに、資格証明ローテーションの完了フェーズの自動開始前の遅延期間の長さを明示的に指定します。指定する遅延期間は、1日以上90日以下にする必要があります。遅延期間中、レガシー資格証明と新しい資格証明の両方が、クラスタとの間でセキュアな通信を提供します。

遅延期間の終了時に完全な資格証明ローテーション・フェーズの自動開始を待機するのではなく、資格証明ローテーションの完了フェーズをすぐに開始できます。

  1. 次のことを確認してください::
  2. 「クラスタ」ページで、「資格証明のローテーションの完了」ラベルの横にある「ローテーションの完了」をクリックします。
  3. 「ローテーションの完了」ダイアログで、「前述のメッセージを読みました」オプションを選択して、Kubernetes APIクライアントを更新したことを確認します。
  4. 「開始」をクリックして、完全な資格証明ローテーション・フェーズを開始します。このフェーズでは、レガシー・ルートCA、秘密キーおよび証明書がリタイアされ、削除されます。
  5. 資格証明ローテーションの完了作業リクエストの進捗を表示するには、「リソース」「作業リクエスト」をクリックします。

    資格証明ローテーションの完了作業リクエストのステータスが「完了」の場合、新しい資格証明はクラスタとの間のセキュアな通信に使用されます。レガシー資格証明がリタイアされ、削除されました。

  6. (推奨ですが必須ではありません)ステップ2で作成したkubeconfigファイル(レガシー資格証明と新規資格証明の両方を含む)を、oci ce cluster create-kubeconfigコマンドを使用して、新しい資格証明のみを含む新しいkubeconfigファイルに置き換えます(クラスタ・アクセスの設定を参照)。

CLIの使用

CLIの使用の詳細は、コマンド・ライン・インタフェース(CLI)を参照してください。CLIコマンドで使用できるフラグおよびオプションの完全なリストは、コマンドライン・リファレンスを参照してください。

資格証明のローテーションの開始フェーズ

oci ce cluster start-credential-rotation --auto-completion-delay-duration <number-of-days> --cluster-id <cluster-ocid>

例:

oci ce cluster start-credential-rotation --auto-completion-delay-duration 'P5D' --cluster-id ocid1.cluster.oc1.iad.aaaaaaaaaf______jrd

資格証明ローテーション作業リクエストのステータスの表示

oci ce cluster credential-rotation-status get --cluster-id <cluster-ocid>

例:

oci ce cluster credential-rotation-status get --cluster-id ocid1.cluster.oc1.iad.aaaaaaaaaf______jrd

資格証明ローテーションの完了フェーズの開始

oci ce cluster complete-credential-rotation --cluster-id <cluster-ocid>

例:

oci ce cluster complete-credential-rotation --cluster-id ocid1.cluster.oc1.iad.aaaaaaaaaf______jrd