IBM Cloud Docs
クラスター・シークレット暗号化のセットアップ

クラスター・シークレット暗号化のセットアップ

仮想プライベート・クラウド クラシック・インフラストラクチャー Satellite

クラスターを作成した後、 IBM® Key Protect for IBM Cloud® や Hyper Protect Crypto Servicesなどの鍵管理サービス (KMS) プロバイダーを有効にすることで、 Kubernetes シークレットと、シークレットに保管されているすべての資格情報を保護できます。

CLI からのシークレット暗号化の有効化

CLI を使用して、KMS プロバイダーの有効化、KMS プロバイダー・インスタンスの更新、またはルート鍵の更新を行うことができます。

別のアカウントで KMS を使用してアカウント間暗号化をセットアップすることは、CLI または API でサポートされています。

  1. KMS インスタンスとルート鍵を作成します。 アカウント間 KMS 暗号化を使用する場合は、KMS インスタンスを使用するアカウントに KMS とルート鍵を作成するようにしてください。

  2. 事前に作成した KMS インスタンスの ID を取得します。

    ibmcloud oc kms instance ls
    
  3. 事前に作成したルート・キーの ID を取得します。

    ibmcloud oc kms crk ls --instance-id <KMS_instance_ID>
    
  4. KMS プロバイダーを有効にして、クラスターのシークレットを暗号化します。 前回取得した情報をオプションに入力する。 デフォルトでは、KMS プロバイダーのプライベート・クラウド・サービス・エンドポイントが暗号鍵のダウンロードに使用されます。 代わりにパブリック・クラウド・サービスのエンドポイントを使用するには、 --public-endpoint オプションを含めます。 有効化プロセスが完了するまで、しばらく時間がかかる可能性があります。

    ibmcloud oc kms enable -c <cluster_name_or_ID> --instance-id <kms_instance_ID> --crk <root_key_ID> [--public-endpoint]
    

    有効化中は、Kubernetes マスターにアクセスしてデプロイメントの YAML 構成を更新したりすることはできません。

  5. KMS の有効化プロセスが終了したことを確認します。 Master StatusReady で、Key management serviceenabled であれば、プロセスは終了しています。

    ibmcloud oc cluster get -c <cluster_name_or_ID>
    

    有効化が進行中の場合の出力例

    NAME:                   <cluster_name>   
    ID:                     <cluster_ID>   
    ...
    Master Status:          Key management service feature enablement in progress.  
    

    マスターの準備が完了した場合の出力例

    NAME:                   <cluster_name>   
    ID:                     <cluster_ID>   
    ...
    Master Status:          Ready (1 min ago)
    ...
    Key Management Service: enabled   
    

    クラスターで KMS プロバイダーを有効にすると、すべてのクラスター・シークレットが自動的に暗号化されます。

  6. オプション: シークレットが暗号化されていることを確認します。

Red Hat OpenShift から開始されるキー有効化は、暗号化がKMSプロバイダーからの新しいキーに切り替わることを意味します。 KMSプロバイダーを通じて開始されるキーローテーションとは、暗号化が既存のキーの新しいバージョンに切り替わることを意味します。 KMSプロバイダーからローテーションされた場合は、KMSインスタンス内のルートキーを削除しないでください。 ルートキーは、使用されていない場合にのみ削除できます。 例えば、新しいキーを有効にし、クラスタが古いキーを使用していないことを確認した後、古いキーを削除することができます。 クラスターが使用するルート・キーを削除すると、そのクラスターは使用できなくなり、そのクラスターのデータはすべて失われ、そのクラスターはリカバリーできなくなります。 ルート鍵をローテーションする場合は、同じクラスターに対して以前のルート鍵を再使用できません。 同様に、ルート・キーを無効にすると、シークレットの読み取りに依存する操作は失敗します。 ただし、ルート・キーを削除するのとは異なり、無効にしたキーを再度有効にしてクラスタを再び使用可能にすることができます。

コンソールからのシークレット暗号化の有効化

IBM Cloud コンソールでは、KMS プロバイダーの有効化、KMS プロバイダー・インスタンスの更新、またはルート鍵の更新を行うことができます。

  1. KMS インスタンスとルート鍵を作成します。 アカウント間 KMS 暗号化を使用する場合は、KMS インスタンスを使用するアカウントに KMS とルート鍵を作成するようにしてください。

  2. コンソールから、暗号化を有効にするクラスタを選択します。

  3. 鍵管理サービスセクション、「有効にする」 をクリックします。 既に KMS プロバイダーを有効にした場合は、**「更新」**をクリックします。

  4. 暗号化に使用する**「鍵管理サービス・インスタンス」「ルート・キー」**を選択します。

    有効化中は、Kubernetes マスターにアクセスしてデプロイメントの YAML 構成を更新したりすることはできません。

  5. 「有効化」(または**「更新」**) をクリックします。

  6. KMS の有効化プロセスが終了したことを確認します。 有効化が進行中の場合の出力例。

    Master status   KMS feature enablement in progress.  
    

    マスターの準備ができたときの出力例。

    Master status   Ready
    

    クラスターで KMS プロバイダーを有効にすると、すべてのクラスター・シークレットが自動的に暗号化されます。

  7. オプション: シークレットが暗号化されていることを確認します。

Red Hat OpenShift から開始されるキー有効化は、KMSプロバイダーから新しいキーに暗号化が切り替わることを意味します。 KMSプロバイダーを通じて開始されるキーローテーションとは、暗号化が既存のキーの新しいバージョンに切り替わることを意味します。 KMSプロバイダーからローテーションされた場合は、KMSインスタンス内のルートキーを削除しないでください。 ルートキーは、使用されていない場合にのみ削除できます。 例えば、新しいキーを有効にし、クラスタが古いキーを使用していないことを確認した後、古いキーを削除することができます。 クラスターが使用するルート・キーを削除すると、そのクラスターは使用できなくなり、そのクラスターのデータはすべて失われ、そのクラスターはリカバリーできなくなります。 ルート鍵をローテーションする場合は、同じクラスターに対して以前のルート鍵を再使用できません。 同様に、ルート・キーを無効にすると、シークレットの読み取りに依存する操作は失敗します。 ただし、ルート・キーを削除するのとは異なり、無効にしたキーを再度有効にしてクラスタを再び使用可能にすることができます。

クラスターのルート鍵のローテーション

クラスターの暗号化に使用するルート鍵をローテートするには、KMS 暗号化を有効にする手順を繰り返します。 ルート鍵をローテーションする場合は、同じクラスターに対して以前のルート鍵を再使用できません。

KMS インスタンスからルート鍵を手動でローテートできます。 このアクションでは、新しいルート鍵を使用してクラスター内の KMS が自動的に再有効化されます。 鍵を手動でローテートするには、KMS プロバイダーの資料を参照してください。

シークレットの暗号化の確認

Red Hat OpenShift on IBM Cloud クラスターで KMS プロバイダーを有効にしたら、ルート・キーを無効にして、クラスターのシークレットが暗号化されていることを確認できます。 ルート・キーを無効にすると、クラスターがシークレットを復号できなくなるので使用不可になります。これは、シークレットが暗号化されていることを意味します。

クラスターに対する IBM Cloud IAM の管理者のプラットフォーム・アクセス役割とマネージャーのサービス役割があることを確認します。

  1. KMS 暗号化が有効になっていることを確認するには、以下のコマンドの出力で Key Management Service の状況が enabled に設定されていることを確認します。

    ibmcloud oc cluster get -c <cluster_name_or_ID>
    
  2. Red Hat OpenShift クラスターにアクセスします

  3. クラスターのシークレットをリスト表示できることを確認します。

    oc get secrets --all-namespaces
    
  4. KMS インスタンスで、クラスターの暗号化に使用されるルート鍵を無効にします。 別のアカウントの KMS と CRK を使用してクラスターを暗号化した場合、CRK は、それが配置されているアカウントからのみ無効にすることができます。

  5. ルート・キーの変更がクラスターで検出されるまで待ちます。

  6. シークレットをリスト表示してみます。 クラスターに接続できなくなっているので、タイムアウト・エラーを受け取ります。 ibmcloud oc cluster config を実行してクラスターのコンテキストを設定しようとすると、このコマンドは失敗します。

    oc get secrets --all-namespaces
    

    出力例

    Unable to connect to the server: dial tcp 169.48.110.250:32346: i/o timeout
    
  7. クラスターが warning 状態にあることを確認します。 もう一度ルート・キーを有効にするまで、クラスターはこの状態のままであるため、使用できません。

    ibmcloud oc cluster get -c <cluster_name_or_ID>
    
  8. KMSインスタンスでルート・キーを有効にして、クラスタが通常の状態に戻り、再び使用できるようにします。