Skip to main content
日本語は機械翻訳による参考訳です。内容に矛盾や不一致があった場合には、英語の内容が優先されます。

Kerberos のインフライト暗号化

共同作成者 netapp-aruldeepa

Kerberos インフライト暗号化を使用すると、マネージド クラスターとストレージ バックエンド間のトラフィックの暗号化を有効にして、データ アクセスのセキュリティを向上させることができます。

Trident は、ストレージ バックエンドとしてのONTAPの Kerberos 暗号化をサポートしています。

  • オンプレミスONTAP - Trident は、 Red Hat OpenShift およびアップストリーム Kubernetes クラスターからオンプレミスONTAPボリュームへの NFSv3 および NFSv4 接続を介した Kerberos 暗号化をサポートします。

NFS 暗号化を使用するボリュームを作成、削除、サイズ変更、スナップショット、クローン、読み取り専用クローン、およびインポートできます。

オンプレミスのONTAPボリュームでインフライト Kerberos 暗号化を構成する

管理対象クラスターとオンプレミスのONTAPストレージ バックエンド間のストレージ トラフィックで Kerberos 暗号化を有効にできます。

メモ オンプレミスのONTAPストレージバックエンドを使用したNFSトラフィックのKerberos暗号化は、 `ontap-nas`ストレージ ドライバー。
開始する前に
  • アクセスできることを確認してください `tridentctl`ユーティリティ。

  • ONTAPストレージ バックエンドへの管理者アクセス権があることを確認します。

  • ONTAPストレージ バックエンドから共有するボリュームの名前を必ず確認してください。

  • NFS ボリュームの Kerberos 暗号化をサポートするようにONTAPストレージ VM を準備していることを確認します。参照 "データLIFでKerberosを有効にする"手順についてはこちらをご覧ください。

  • Kerberos 暗号化で使用する NFSv4 ボリュームが正しく構成されていることを確認します。 NetApp NFSv4ドメイン構成セクション(13ページ)を参照してください。 "NetApp NFSv4 の機能強化とベストプラクティスガイド"

ONTAPエクスポートポリシーを追加または変更する

既存のONTAPエクスポート ポリシーにルールを追加するか、 ONTAPストレージ VM ルート ボリュームと、アップストリーム Kubernetes クラスターと共有されているすべてのONTAPボリュームに対して Kerberos 暗号化をサポートする新しいエクスポート ポリシーを作成する必要があります。追加するエクスポート ポリシー ルール、または作成する新しいエクスポート ポリシーは、次のアクセス プロトコルとアクセス許可をサポートする必要があります。

アクセス プロトコル

NFS、NFSv3、および NFSv4 アクセス プロトコルを使用してエクスポート ポリシーを構成します。

アクセス詳細

ボリュームのニーズに応じて、3 つの異なるバージョンの Kerberos 暗号化のいずれかを構成できます。

  • Kerberos 5 - (認証と暗号化)

  • Kerberos 5i - (ID保護を備えた認証と暗号化)

  • Kerberos 5p - (アイデンティティとプライバシー保護を備えた認証と暗号化)

適切なアクセス権限を使用してONTAPエクスポート ポリシー ルールを設定します。たとえば、クラスターが Kerberos 5i と Kerberos 5p 暗号化を組み合わせて NFS ボリュームをマウントする場合は、次のアクセス設定を使用します。

タイプ 読み取り専用アクセス 読み取り/書き込みアクセス スーパーユーザーアクセス

UNIX

有効

有効

有効

Kerberos 5i

有効

有効

有効

Kerberos 5p

有効

有効

有効

ONTAPエクスポート ポリシーとエクスポート ポリシー ルールを作成する方法については、次のドキュメントを参照してください。

ストレージバックエンドを作成する

Kerberos 暗号化機能を含むTridentストレージ バックエンド構成を作成できます。

タスク概要

Kerberos暗号化を設定するストレージバックエンド構成ファイルを作成するときに、次のオプションを使用して3つの異なるバージョンのKerberos暗号化のいずれかを指定できます。 `spec.nfsMountOptions`パラメータ:

  • spec.nfsMountOptions: sec=krb5(認証と暗号化)

  • spec.nfsMountOptions: sec=krb5i(ID保護を備えた認証と暗号化)

  • spec.nfsMountOptions: sec=krb5p(アイデンティティとプライバシー保護を備えた認証と暗号化)

Kerberos レベルを 1 つだけ指定します。パラメータ リストで複数の Kerberos 暗号化レベルを指定した場合、最初のオプションのみが使用されます。

手順
  1. マネージド クラスターで、次の例を使用してストレージ バックエンド構成ファイルを作成します。括弧<>内の値は、環境の情報で置き換えます。

    apiVersion: v1
    kind: Secret
    metadata:
      name: backend-ontap-nas-secret
    type: Opaque
    stringData:
      clientID: <CLIENT_ID>
      clientSecret: <CLIENT_SECRET>
    ---
    apiVersion: trident.netapp.io/v1
    kind: TridentBackendConfig
    metadata:
      name: backend-ontap-nas
    spec:
      version: 1
      storageDriverName: "ontap-nas"
      managementLIF: <STORAGE_VM_MGMT_LIF_IP_ADDRESS>
      dataLIF: <PROTOCOL_LIF_FQDN_OR_IP_ADDRESS>
      svm: <STORAGE_VM_NAME>
      username: <STORAGE_VM_USERNAME_CREDENTIAL>
      password: <STORAGE_VM_PASSWORD_CREDENTIAL>
      nasType: nfs
      nfsMountOptions: ["sec=krb5i"] #can be krb5, krb5i, or krb5p
      qtreesPerFlexvol:
      credentials:
        name: backend-ontap-nas-secret
  2. 前の手順で作成した構成ファイルを使用して、バックエンドを作成します。

    tridentctl create backend -f <backend-configuration-file>

    バックエンドの作成に失敗した場合、バックエンドの構成に問題があります。次のコマンドを実行すると、ログを表示して原因を特定できます。

    tridentctl logs

    構成ファイルの問題を特定して修正したら、create コマンドを再度実行できます。

ストレージクラスを作成する

Kerberos 暗号化を使用してボリュームをプロビジョニングするためのストレージ クラスを作成できます。

タスク概要

ストレージクラスオブジェクトを作成するときに、Kerberos暗号化の3つの異なるバージョンのいずれかを指定できます。 `mountOptions`パラメータ:

  • mountOptions: sec=krb5(認証と暗号化)

  • mountOptions: sec=krb5i(ID保護を備えた認証と暗号化)

  • mountOptions: sec=krb5p(アイデンティティとプライバシー保護を備えた認証と暗号化)

Kerberos レベルを 1 つだけ指定します。パラメータ リストで複数の Kerberos 暗号化レベルを指定した場合、最初のオプションのみが使用されます。ストレージ バックエンド構成で指定した暗号化レベルがストレージ クラス オブジェクトで指定したレベルと異なる場合は、ストレージ クラス オブジェクトが優先されます。

手順
  1. 次の例を使用して、StorageClass Kubernetes オブジェクトを作成します。

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: ontap-nas-sc
    provisioner: csi.trident.netapp.io
    mountOptions:
      - sec=krb5i #can be krb5, krb5i, or krb5p
    parameters:
      backendType: ontap-nas
      storagePools: ontapnas_pool
      trident.netapp.io/nasType: nfs
    allowVolumeExpansion: true
  2. ストレージ クラスを作成します。

    kubectl create -f sample-input/storage-class-ontap-nas-sc.yaml
  3. ストレージ クラスが作成されたことを確認します。

    kubectl get sc ontap-nas-sc

    次のような出力が表示されます。

    NAME         PROVISIONER             AGE
    ontap-nas-sc    csi.trident.netapp.io   15h

プロビジョニングボリューム

ストレージ バックエンドとストレージ クラスを作成したら、ボリュームをプロビジョニングできるようになります。手順については、 "ボリュームをプロビジョニングする"

Azure NetApp Filesボリュームでインフライト Kerberos 暗号化を構成する

マネージド クラスターと単一のAzure NetApp Filesストレージ バックエンドまたはAzure NetApp Filesストレージ バックエンドの仮想プール間のストレージ トラフィックに対して Kerberos 暗号化を有効にできます。

開始する前に
  • 管理対象 Red Hat OpenShift クラスターでTridentが有効になっていることを確認します。

  • アクセスできることを確認してください `tridentctl`ユーティリティ。

  • 要件に注意し、以下の手順に従って、Kerberos暗号化用のAzure NetApp Filesストレージバックエンドを準備したことを確認します。 "Azure NetApp Files のドキュメント"

  • Kerberos 暗号化で使用する NFSv4 ボリュームが正しく構成されていることを確認します。 NetApp NFSv4ドメイン構成セクション(13ページ)を参照してください。 "NetApp NFSv4 の機能強化とベストプラクティスガイド"

ストレージバックエンドを作成する

Kerberos 暗号化機能を含むAzure NetApp Filesストレージ バックエンド構成を作成できます。

タスク概要

Kerberos 暗号化を構成するストレージ バックエンド構成ファイルを作成するときに、次の 2 つのレベルのいずれかで適用されるように定義できます。

  • *ストレージバックエンドレベル*は、 `spec.kerberos`分野

  • *仮想プールレベル*を使用して `spec.storage.kerberos`分野

仮想プール レベルで構成を定義する場合、ストレージ クラスのラベルを使用してプールが選択されます。

どちらのレベルでも、Kerberos 暗号化の 3 つの異なるバージョンのいずれかを指定できます。

  • kerberos: sec=krb5(認証と暗号化)

  • kerberos: sec=krb5i(ID保護を備えた認証と暗号化)

  • kerberos: sec=krb5p(アイデンティティとプライバシー保護を備えた認証と暗号化)

手順
  1. 管理対象クラスターで、ストレージ バックエンドを定義する必要がある場所 (ストレージ バックエンド レベルまたは仮想プール レベル) に応じて、次のいずれかの例を使用してストレージ バックエンド構成ファイルを作成します。括弧<>内の値は、環境の情報で置き換えます。

    ストレージバックエンドレベルの例
    apiVersion: v1
    kind: Secret
    metadata:
      name: backend-tbc-secret
    type: Opaque
    stringData:
      clientID: <CLIENT_ID>
      clientSecret: <CLIENT_SECRET>
    
    ---
    apiVersion: trident.netapp.io/v1
    kind: TridentBackendConfig
    metadata:
      name: backend-tbc
    spec:
      version: 1
      storageDriverName: azure-netapp-files
      subscriptionID: <SUBSCRIPTION_ID>
      tenantID: <TENANT_ID>
      location: <AZURE_REGION_LOCATION>
      serviceLevel: Standard
      networkFeatures: Standard
      capacityPools: <CAPACITY_POOL>
      resourceGroups: <RESOURCE_GROUP>
      netappAccounts: <NETAPP_ACCOUNT>
      virtualNetwork: <VIRTUAL_NETWORK>
      subnet: <SUBNET>
      nasType: nfs
      kerberos: sec=krb5i #can be krb5, krb5i, or krb5p
      credentials:
        name: backend-tbc-secret
    仮想プールレベルの例
    ---
    apiVersion: v1
    kind: Secret
    metadata:
      name: backend-tbc-secret
    type: Opaque
    stringData:
      clientID: <CLIENT_ID>
      clientSecret: <CLIENT_SECRET>
    
    ---
    apiVersion: trident.netapp.io/v1
    kind: TridentBackendConfig
    metadata:
      name: backend-tbc
    spec:
      version: 1
      storageDriverName: azure-netapp-files
      subscriptionID: <SUBSCRIPTION_ID>
      tenantID: <TENANT_ID>
      location: <AZURE_REGION_LOCATION>
      serviceLevel: Standard
      networkFeatures: Standard
      capacityPools: <CAPACITY_POOL>
      resourceGroups: <RESOURCE_GROUP>
      netappAccounts: <NETAPP_ACCOUNT>
      virtualNetwork: <VIRTUAL_NETWORK>
      subnet: <SUBNET>
      nasType: nfs
      storage:
        - labels:
            type: encryption
          kerberos: sec=krb5i #can be krb5, krb5i, or krb5p
      credentials:
        name: backend-tbc-secret
  2. 前の手順で作成した構成ファイルを使用して、バックエンドを作成します。

    tridentctl create backend -f <backend-configuration-file>

    バックエンドの作成に失敗した場合、バックエンドの構成に問題があります。次のコマンドを実行すると、ログを表示して原因を特定できます。

    tridentctl logs

    構成ファイルの問題を特定して修正したら、create コマンドを再度実行できます。

ストレージクラスを作成する

Kerberos 暗号化を使用してボリュームをプロビジョニングするためのストレージ クラスを作成できます。

手順
  1. 次の例を使用して、StorageClass Kubernetes オブジェクトを作成します。

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: sc-nfs
    provisioner: csi.trident.netapp.io
    parameters:
      backendType: azure-netapp-files
      trident.netapp.io/nasType: nfs
      selector: type=encryption
  2. ストレージ クラスを作成します。

    kubectl create -f sample-input/storage-class-sc-nfs.yaml
  3. ストレージ クラスが作成されたことを確認します。

    kubectl get sc -sc-nfs

    次のような出力が表示されます。

    NAME         PROVISIONER             AGE
    sc-nfs       csi.trident.netapp.io   15h

プロビジョニングボリューム

ストレージ バックエンドとストレージ クラスを作成したら、ボリュームをプロビジョニングできるようになります。手順については、 "ボリュームをプロビジョニングする"