Kerberos のインフライト暗号化
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 暗号化レベルを指定した場合、最初のオプションのみが使用されます。
-
マネージド クラスターで、次の例を使用してストレージ バックエンド構成ファイルを作成します。括弧<>内の値は、環境の情報で置き換えます。
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 -
前の手順で作成した構成ファイルを使用して、バックエンドを作成します。
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 暗号化レベルを指定した場合、最初のオプションのみが使用されます。ストレージ バックエンド構成で指定した暗号化レベルがストレージ クラス オブジェクトで指定したレベルと異なる場合は、ストレージ クラス オブジェクトが優先されます。
-
次の例を使用して、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 -
ストレージ クラスを作成します。
kubectl create -f sample-input/storage-class-ontap-nas-sc.yaml -
ストレージ クラスが作成されたことを確認します。
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(アイデンティティとプライバシー保護を備えた認証と暗号化)
-
管理対象クラスターで、ストレージ バックエンドを定義する必要がある場所 (ストレージ バックエンド レベルまたは仮想プール レベル) に応じて、次のいずれかの例を使用してストレージ バックエンド構成ファイルを作成します。括弧<>内の値は、環境の情報で置き換えます。
ストレージバックエンドレベルの例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 -
前の手順で作成した構成ファイルを使用して、バックエンドを作成します。
tridentctl create backend -f <backend-configuration-file>バックエンドの作成に失敗した場合、バックエンドの構成に問題があります。次のコマンドを実行すると、ログを表示して原因を特定できます。
tridentctl logs構成ファイルの問題を特定して修正したら、create コマンドを再度実行できます。
ストレージクラスを作成する
Kerberos 暗号化を使用してボリュームをプロビジョニングするためのストレージ クラスを作成できます。
-
次の例を使用して、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 -
ストレージ クラスを作成します。
kubectl create -f sample-input/storage-class-sc-nfs.yaml -
ストレージ クラスが作成されたことを確認します。
kubectl get sc -sc-nfs次のような出力が表示されます。
NAME PROVISIONER AGE sc-nfs csi.trident.netapp.io 15h
プロビジョニングボリューム
ストレージ バックエンドとストレージ クラスを作成したら、ボリュームをプロビジョニングできるようになります。手順については、 "ボリュームをプロビジョニングする" 。