第7章 MicroShift の認証とセキュリティーの設定


7.1. カスタム認証局の設定

MicroShift のデフォルトの API サーバー証明書を認証局 (CA) が発行したカスタムサーバー証明書に置き換えることで、外部クライアントとの接続が許可および暗号化されます。

7.1.1. MicroShift API サーバーのカスタム認証局の使用

MicroShift が起動すると、内部の MicroShift クラスター認証局 (CA) によってデフォルトの API サーバー証明書が発行されます。デフォルトでは、クラスター外のクライアントは MicroShift が発行した API サーバー証明書を検証できません。MicroShift API サーバーと外部クライアント間のセキュアなアクセスを許可し、接続を暗号化できます。デフォルトの証明書は、クライアントが信頼する CA によって外部的に発行されたカスタムサーバー証明書に置き換えます。

次のステップは、MicroShift で API サーバー証明書設定をカスタマイズするためのワークフローを示しています。

  1. 証明書とキーをホストオペレーティングシステムの優先ディレクトリーにコピーします。root アクセスを使用した場合にのみファイルにアクセスできることを確認します。
  2. MicroShift /etc/microshift/config.yaml 設定ファイルで証明書名と新しい完全修飾ドメイン名 (FQDN) を指定して、各カスタム CA の MicroShift 設定を更新します。

    各証明書設定には、以下の値を含めることができます。

    • 証明書ファイルの場所は必須の値です。
    • API サーバーの DNS と IP アドレスまたは IP アドレス範囲を含む単一の共通名。

      ヒント

      ほとんどの場合、MicroShift は、指定した IP アドレスまたは範囲を含むカスタム CA の新しい kubeconfig ファイルを生成します。例外は、IP アドレスにワイルドカードを指定する場合です。この場合、MicroShift はサーバーのパブリック IP アドレスを使用して kubeconfig ファイルを生成します。ワイルドカードを使用するには、特定の詳細で kubeconfig ファイルを更新する必要があります。

    • API サーバーの DNS と IP アドレス、またはワイルドカード証明書を含む複数のサブジェクト別名 (SAN)。
    • 各証明書に追加の DNS 名をリスト表示できます。
  3. MicroShift サービスが再起動した後、生成された kubeconfig ファイルをクライアントにコピーする必要があります。
  4. クライアントシステムで追加の CA を設定します。たとえば、Red Hat Enterprise Linux (RHEL) トラストストア内の CA バンドルを更新できます。

    重要

    カスタムサーバー証明書は、ホストオペレーティングシステムの信頼ルートに設定された CA データに対して検証する必要があります。詳細は、以下のドキュメントを参照してください。

  5. 証明書と鍵は、ホスト上の指定されたファイルの場所から読み取られます。クライアントから設定をテストして検証できます。

    • 検証に失敗した場合、MicroShift はカスタム設定をスキップし、デフォルトの証明書を使用して起動します。サービスを中断せずに継続することが最優先事項です。MicroShift は、サービスの開始時にエラーを記録します。一般的なエラーには、証明書の期限切れ、ファイルの欠落、IP アドレスの誤りなどがあります。
  6. 外部サーバー証明書は自動的に更新されません。外部証明書を手動でローテーションする必要があります。

7.1.2. カスタム認証局の設定

カスタム証明局 (CA) を使用して外部で生成された証明書とドメイン名を設定するには、それらを MicroShift の /etc/microshift/config.yaml 設定ファイルに追加します。ホストオペレーティングシステムの信頼ルートも設定する必要があります。

注記

外部で生成された kubeconfig ファイルは /var/lib/microshift/resources/kubeadmin/<hostname>/kubeconfig ディレクトリーに作成されます。外部で生成された設定に加えて localhost を使用する必要がある場合は、元の kubeconfig ファイルをデフォルトの場所に保持します。localhost kubeconfig ファイルは、自己署名認証局を使用します。

前提条件

  • OpenShift CLI (oc) がインストールされている。
  • クラスター管理者のロールを持つユーザーとしてクラスターにアクセスできる。
  • 認証局がカスタム証明書を発行している。
  • MicroShift の /etc/microshift/config.yaml 設定ファイルが存在する。

手順

  1. 追加するカスタム証明書を MicroShift ホストの信頼ルートにコピーします。証明書と秘密鍵に MicroShift のみがアクセス可能であることを確認します。
  2. 必要なカスタム CA ごとに、次の例を使用して、namedCertificates という apiServer セクションを /etc/microshift/config.yaml MicroShift 設定ファイルに追加します。

    apiServer:
      namedCertificates:
       - certPath: ~/certs/api_fqdn_1.crt 
    1
    
         keyPath:  ~/certs/api_fqdn_1.key 
    2
    
       - certPath: ~/certs/api_fqdn_2.crt
         keyPath:  ~/certs/api_fqdn_2.key
         names: 
    3
    
         - api_fqdn_1
         - *.apps.external.com
    Copy to Clipboard Toggle word wrap
    1
    証明書の完全パスを追加します。
    2
    証明書キーへの完全パスを追加します。
    3
    オプション: 明示的な DNS 名のリストを追加します。ワイルドカードは、先頭に指定できます。名前が指定されていない場合は、暗黙名が証明書からリストされます。
  3. 次のコマンドを実行して、MicroShift を再起動し、証明書を適用します。

    $ systemctl microshift restart
    Copy to Clipboard Toggle word wrap
  4. システムが再起動してカスタムサーバーが適用されるまで数分間待ちます。新しい kubeconfig ファイルは /var/lib/microshift/resources/kubeadmin/ ディレクトリーに生成されます。
  5. kubeconfig ファイルをクライアントにコピーします。IP アドレスにワイルドカードを指定した場合は、kubeconfig を更新してサーバーのパブリック IP アドレスを削除し、その IP アドレスを使用する特定のワイルドカード範囲に置き換えます。
  6. クライアントからは、次の手順を実行します。

    1. 次のコマンドを実行して、使用する kubeconfig を指定します。

      $ export KUBECONFIG=~/custom-kubeconfigs/kubeconfig 
      1
      Copy to Clipboard Toggle word wrap
      1
      コピーした kubeconfig ファイルの場所をパスとして使用します。
    2. 次のコマンドを使用して、証明書が適用されていることを確認します。

      $ oc --certificate-authority ~/certs/ca.ca get node
      Copy to Clipboard Toggle word wrap

      出力例

      oc get node
      NAME                             STATUS   ROLES                         AGE   VERSION
      dhcp-1-235-195.arm.example.com   Ready    control-plane,master,worker   76m   v1.32.3
      Copy to Clipboard Toggle word wrap

    3. 次のコマンドを実行して、新しい CA ファイルを $KUBECONFIG 環境変数に追加します。

      $ oc config set clusters.microshift.certificate-authority /tmp/certificate-authority-data-new.crt
      Copy to Clipboard Toggle word wrap
    4. 次のコマンドを実行して、新しい kubeconfig ファイルに新しい CA が含まれていることを確認します。

      $ oc config view --flatten
      Copy to Clipboard Toggle word wrap

      外部で生成された kubeconfig ファイルの例

      apiVersion: v1
      clusters:
      - cluster:
          certificate-authority: /tmp/certificate-authority-data-new.crt 
      1
      
          server: https://api.ci-ln-k0gim2b-76ef8.aws-2.ci.openshift.org:6443
        name: ci-ln-k0gim2b-76ef8
      contexts:
      - context:
          cluster: ci-ln-k0gim2b-76ef8
          user:
        name:
      current-context:
      kind: Config
      preferences: {}
      Copy to Clipboard Toggle word wrap

      1
      外部で生成された kubeconfig ファイルには、certificate-authority-data セクションが存在しません。これは、以前使用した oc config set コマンドで追加されます。
    5. 次のコマンドを実行して、カスタマイズされた API サーバー認証局の subjectissuer を確認します。

      $ curl --cacert /tmp/caCert.pem https://${fqdn_name}:6443/healthz -v
      Copy to Clipboard Toggle word wrap

      出力例

      Server certificate:
        subject: CN=kas-test-cert_server
        start date: Mar 12 11:39:46 2024 GMT
        expire date: Mar 12 11:39:46 2025 GMT
        subjectAltName: host "dhcp-1-235-3.arm.eng.rdu2.redhat.com" matched cert's "dhcp-1-235-3.arm.eng.rdu2.redhat.com"
        issuer: CN=kas-test-cert_ca
        SSL certificate verify ok.
      Copy to Clipboard Toggle word wrap

      重要

      生成された kubeconfig ファイル内の certificate-authority-data を新しい rootCA に置き換えるか、certificate-authority-data をオペレーティングシステムの信頼ルートに追加します。両方の方法を使用しないでください。

    6. オペレーティングシステムの信頼ルートで追加の CA を設定します。たとえば、クライアントシステム上の RHEL クライアントトラストストア内などです。システム全体のトラストストア

      • CA を含む設定で証明書バンドルを更新することを推奨します。
      • 証明書バンドルを設定しない場合は、代わりに oc login localhost:8443 --certificate-authority=/path/to/cert.crt コマンドを使用することもできますが、この方法は推奨されません。

7.1.3. カスタム証明書の予約名の値

次の証明書の問題により、MicroShift は証明書を動的に無視し、エラーをログに記録します。

  • 証明書ファイルがディスク上に存在しないか、読み取り可能ではありません。
  • 証明書は解析できません。
  • 証明書は、SubjectAlternativeNames (SAN) フィールドの内部証明書の IP アドレスまたは DNS 名をオーバーライドします。SAN を設定するときは予約名を使用しないでください。
Expand
表7.1 予約名の値
アドレスコメント

localhost

DNS

 

127.0.0.1

IP Address

 

10.42.0.0

IP Address

クラスターネットワーク

10.43.0.0/16,10.44.0.0/16

IP Address

サービスネットワーク

169.254.169.2/29

IP Address

br-ex ネットワーク

kubernetes.default.svc

DNS

 

openshift.default.svc

DNS

 

svc.cluster.local

DNS

 

7.1.4. カスタム証明書のトラブルシューティング

カスタム証明書の実装のトラブルシューティングを行うには、次の手順を実行します。

手順

  1. MicroShift から、次のコマンドを実行して、証明書が kube-apiserver によって提供されていることを確認し、証明書パスが --tls-sni-cert-key フラグに追加されていることを確認します。

    $ journalctl -u microshift -b0 | grep tls-sni-cert-key
    Copy to Clipboard Toggle word wrap

    出力例

    Jan 24 14:53:00 localhost.localdomain microshift[45313]: kube-apiserver I0124 14:53:00.649099   45313 flags.go:64] FLAG: --tls-sni-cert-key="[/home/eslutsky/dev/certs/server.crt,/home/eslutsky/dev/certs/server.key;/var/lib/microshift/certs/kube-apiserver-external-signer/kube-external-serving/server.crt,/var/lib/microshift/certs/kube-apiserver-external-signer/kube-external-serving/server.key;/var/lib/microshift/certs/kube-apiserver-localhost-signer/kube-apiserver-localhost-serving/server.crt,/var/lib/microshift/certs/kube-apiserver-localhost-signer/kube-apiserver-localhost-serving/server.key;/var/lib/microshift/certs/kube-apiserver-service-network-signer/kube-apiserver-service-network-serving/server.crt,/var/lib/microshift/certs/kube-apiserver-service-network-signer/kube-apiserver-service-network-serving/server.key
    Copy to Clipboard Toggle word wrap

  2. クライアントから次のコマンドを実行して、kube-apiserver が正しい証明書を提供していることを確認します。

    $ openssl s_client -connect <SNI_ADDRESS>:6443 -showcerts | openssl x509 -text -noout -in - | grep -C 1 "Alternative\|CN"
    Copy to Clipboard Toggle word wrap

7.1.5. カスタム証明書のクリーンアップおよび再作成

MicroShift サービスを停止するには、カスタム証明書をクリーンアップし、カスタム証明書を再作成するには、次の手順を使用します。

手順

  1. 次のコマンドを実行して、MicroShift サービスを停止し、カスタム証明書をクリーンアップします。

    $ sudo microshift-cleanup-data --cert
    Copy to Clipboard Toggle word wrap

    出力例

    Stopping MicroShift services
    Removing MicroShift certificates
    MicroShift service was stopped
    Cleanup succeeded
    Copy to Clipboard Toggle word wrap

  2. 次のコマンドを実行して、MicroShift サービスを再起動し、カスタム証明書を再作成します。

    $ sudo systemctl start microshift
    Copy to Clipboard Toggle word wrap

7.1.6. 関連情報

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat