Criptografia em trânsito Kerberos
Usando criptografia em trânsito Kerberos, você pode melhorar a segurança do acesso aos dados habilitando a criptografia para o tráfego entre seu cluster gerenciado e o storage backend.
Trident oferece suporte à criptografia Kerberos para ONTAP como backend de storage:
-
On-premise ONTAP - Trident oferece suporte à criptografia Kerberos em conexões NFSv3 e NFSv4 de clusters Red Hat OpenShift e Kubernetes upstream para volumes ONTAP locais.
Você pode criar, excluir, redimensionar, criar snapshots, clonar, clonar em modo somente leitura e importar volumes que utilizam criptografia NFS.
Configurar criptografia Kerberos em trânsito com volumes ONTAP locais
Você pode habilitar a criptografia Kerberos no tráfego de storage entre seu cluster gerenciado e um backend de storage ONTAP local.
|
|
A criptografia Kerberos para o tráfego NFS com backends de storage ONTAP locais só é compatível usando o driver de storage ontap-nas.
|
-
Certifique-se de ter acesso ao utilitário
tridentctl. -
Certifique-se de ter acesso de administrador ao backend de storage ONTAP.
-
Certifique-se de saber o nome do(s) volume(s) que você compartilhará do backend de storage ONTAP.
-
Certifique-se de ter preparado a máquina virtual de storage ONTAP para suportar a criptografia Kerberos para volumes NFS. Consulte "Habilite o Kerberos em um dataLIF" para obter instruções.
-
Certifique-se de que todos os volumes NFSv4 que você usa com criptografia Kerberos estejam configurados corretamente. Consulte a seção Configuração de Domínio NFSv4 da NetApp (página 13) do "NetApp NFSv4 Melhorias e Guia de Práticas Recomendadas".
Adicionar ou modificar políticas de exportação do ONTAP
Você precisa adicionar regras às políticas de exportação ONTAP existentes ou criar novas políticas de exportação que ofereçam suporte à criptografia Kerberos para o volume raiz da máquina virtual de storage ONTAP, bem como para quaisquer volumes ONTAP compartilhados com o cluster Kubernetes upstream. As regras de política de exportação que você adicionar, ou as novas políticas de exportação que você criar, precisam oferecer suporte aos seguintes protocolos de acesso e permissões de acesso:
Configure a política de exportação com os protocolos de acesso NFS, NFSv3 e NFSv4.
Você pode configurar uma das três versões diferentes de criptografia Kerberos, dependendo das suas necessidades para o volume:
-
Kerberos 5 - (autenticação e criptografia)
-
Kerberos 5i - (autenticação e criptografia com proteção de identidade)
-
Kerberos 5p - (autenticação e criptografia com proteção de identidade e privacidade)
Configure a regra de política de exportação do ONTAP com as permissões de acesso apropriadas. Por exemplo, se os clusters forem montar os volumes NFS com uma combinação de criptografia Kerberos 5i e Kerberos 5p, use as seguintes configurações de acesso:
| Tipo | Acesso somente leitura | Acesso de leitura/gravação | Acesso de superusuário |
|---|---|---|---|
UNIX |
Habilitado |
Habilitado |
Habilitado |
Kerberos 5i |
Habilitado |
Habilitado |
Habilitado |
Kerberos 5p |
Habilitado |
Habilitado |
Habilitado |
Consulte a seguinte documentação para saber como criar políticas de exportação do ONTAP e regras de políticas de exportação:
Crie um backend de storage
Você pode criar uma configuração de backend de storage Trident que inclua a capacidade de criptografia Kerberos.
Ao criar um arquivo de configuração de storage backend que configura a criptografia Kerberos, você pode especificar uma das três versões diferentes de criptografia Kerberos usando o spec.nfsMountOptions parâmetro:
-
spec.nfsMountOptions: sec=krb5(autenticação e criptografia) -
spec.nfsMountOptions: sec=krb5i(autenticação e criptografia com proteção de identidade) -
spec.nfsMountOptions: sec=krb5p(autenticação e criptografia com proteção de identidade e privacidade)
Especifique apenas um nível de Kerberos. Se você especificar mais de um nível de criptografia Kerberos na lista de parâmetros, somente a primeira opção será usada.
-
No cluster gerenciado, crie um arquivo de configuração de backend de storage usando o exemplo a seguir. Substitua os valores entre colchetes <> com informações do seu ambiente:
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 -
Use o arquivo de configuração que você criou na etapa anterior para criar o backend:
tridentctl create backend -f <backend-configuration-file>Se a criação do backend falhar, há algo errado com a configuração do backend. Você pode visualizar os logs para determinar a causa executando o seguinte comando:
tridentctl logsApós identificar e corrigir o problema com o arquivo de configuração, você pode executar o comando create novamente.
Crie uma storage class
Você pode criar uma classe de armazenamento para provisionar volumes com criptografia Kerberos.
Ao criar um objeto de classe de armazenamento, você pode especificar uma das três versões diferentes de criptografia Kerberos usando o `mountOptions`parâmetro:
-
mountOptions: sec=krb5(autenticação e criptografia) -
mountOptions: sec=krb5i(autenticação e criptografia com proteção de identidade) -
mountOptions: sec=krb5p(autenticação e criptografia com proteção de identidade e privacidade)
Especifique apenas um nível Kerberos. Se você especificar mais de um nível de criptografia Kerberos na lista de parâmetros, somente a primeira opção será usada. Se o nível de criptografia que você especificou na configuração do backend de storage for diferente do nível que você especificar no objeto da classe de storage, o objeto da classe de storage terá precedência.
-
Crie um objeto Kubernetes StorageClass, usando o seguinte exemplo:
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 -
Crie a classe de armazenamento:
kubectl create -f sample-input/storage-class-ontap-nas-sc.yaml -
Certifique-se de que a classe de armazenamento foi criada:
kubectl get sc ontap-nas-scVocê deverá ver uma saída semelhante à seguinte:
NAME PROVISIONER AGE ontap-nas-sc csi.trident.netapp.io 15h
Provisionar volumes
Após criar um backend de armazenamento e uma classe de armazenamento, você pode provisionar um volume. Para obter instruções, consulte "Provisionar um volume".
Configurar criptografia Kerberos em trânsito com volumes do Azure NetApp Files
Você pode habilitar a criptografia Kerberos no tráfego de armazenamento entre seu cluster gerenciado e um único back-end de armazenamento Azure NetApp Files ou um pool virtual de back-ends de armazenamento Azure NetApp Files.
-
Certifique-se de ter habilitado Trident no cluster Red Hat OpenShift gerenciado.
-
Certifique-se de ter acesso ao utilitário
tridentctl. -
Certifique-se de ter preparado o backend de armazenamento Azure NetApp Files para criptografia Kerberos, observando os requisitos e seguindo as instruções em "Documentação do Azure NetApp Files".
-
Certifique-se de que todos os volumes NFSv4 que você usa com criptografia Kerberos estejam configurados corretamente. Consulte a seção Configuração de Domínio NFSv4 da NetApp (página 13) do "NetApp NFSv4 Melhorias e Guia de Práticas Recomendadas".
Crie um backend de storage
Você pode criar uma configuração de back-end de armazenamento do Azure NetApp Files que inclua a capacidade de criptografia Kerberos.
Ao criar um arquivo de configuração de backend de storage que configura a criptografia Kerberos, você pode defini-lo para que seja aplicado em um dos dois níveis possíveis:
-
O nível de backend de armazenamento usando o
spec.kerberoscampo -
O nível do pool virtual usando o
spec.storage.kerberoscampo
Ao definir a configuração no nível do pool virtual, o pool é selecionado usando o rótulo na storage class.
Em qualquer um dos níveis, você pode especificar uma das três versões diferentes de criptografia Kerberos:
-
kerberos: sec=krb5(autenticação e criptografia) -
kerberos: sec=krb5i(autenticação e criptografia com proteção de identidade) -
kerberos: sec=krb5p(autenticação e criptografia com proteção de identidade e privacidade)
-
No cluster gerenciado, crie um arquivo de configuração de backend de storage usando um dos exemplos a seguir, dependendo de onde você precisa definir o backend de storage (nível do backend de storage ou nível do pool virtual). Substitua os valores entre colchetes <> com as informações do seu ambiente:
Exemplo de nível de storage backendapiVersion: 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-secretExemplo de nível de pool virtual--- 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 -
Use o arquivo de configuração que você criou na etapa anterior para criar o backend:
tridentctl create backend -f <backend-configuration-file>Se a criação do backend falhar, há algo errado com a configuração do backend. Você pode visualizar os logs para determinar a causa executando o seguinte comando:
tridentctl logsApós identificar e corrigir o problema com o arquivo de configuração, você pode executar o comando create novamente.
Crie uma storage class
Você pode criar uma classe de armazenamento para provisionar volumes com criptografia Kerberos.
-
Crie um objeto Kubernetes StorageClass, usando o seguinte exemplo:
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 -
Crie a classe de armazenamento:
kubectl create -f sample-input/storage-class-sc-nfs.yaml -
Certifique-se de que a classe de armazenamento foi criada:
kubectl get sc -sc-nfsVocê deverá ver uma saída semelhante à seguinte:
NAME PROVISIONER AGE sc-nfs csi.trident.netapp.io 15h
Provisionar volumes
Após criar um backend de armazenamento e uma classe de armazenamento, você pode provisionar um volume. Para obter instruções, consulte "Provisionar um volume".