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

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

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