Configurar o Key Vault para rotação de credenciais gerenciadas no Nexus do Operador

O Nexus do Operador do Azure utiliza segredos e certificados para gerenciar a segurança de componentes em toda a plataforma. A plataforma Nexus do Operator lida com a rotação desses segredos e certificados. Por padrão, o Nexus do Operador armazena as credenciais em um Key Vault gerenciado. Para manter as credenciais giradas em seu próprio Key Vault, o usuário precisa configurar o Key Vault para a instância do Nexus do Operador do Azure. Depois de criado, o usuário precisa adicionar uma atribuição de função no Cofre de Chaves do Cliente para permitir que a Plataforma Nexus do Operador escreva credenciais atualizadas e, além disso, vincule o Cofre de Chaves do Cliente ao Recurso de Cluster Nexus.

Pré-requisitos

Observação

Um único Key Vault pode ser usado para qualquer número de clusters.

Configurar a Identidade Gerenciada para o Gerenciador de Cluster

A partir da API 2024-06-01-public-preview, identidades gerenciadas são usadas no Gerenciador de Cluster para acesso para gravação a credenciais rotacionadas em um cofre de chaves. A identidade do Gerenciador de Cluster pode ser atribuída pelo usuário ou pelo sistema, e pode ser gerenciada diretamente por meio de APIs ou CLI.

Estes exemplos descrevem como configurar uma identidade gerenciada para um Gerenciador de Cluster.

  • Criar ou atualizar o Gerenciador de Cluster com uma identidade atribuída pelo sistema
        az networkcloud clustermanager create --name "clusterManagerName" --location "location" \
        --analytics-workspace-id "/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/microsoft.operationalInsights/workspaces/logAnalyticsWorkspaceName" \
        --fabric-controller-id "/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.ManagedNetworkFabric/networkFabricControllers/fabricControllerName" \
        --managed-resource-group-configuration name="my-managed-rg" --tags key1="myvalue1" key2="myvalue2" --resource-group "resourceGroupName" --mi-system-assigned
  • Criar ou atualizar o Gerenciador de Clusters com uma identidade atribuída pelo usuário
        az networkcloud clustermanager create --name <Cluster Manager Name> --location <Location> \
        --analytics-workspace-id "/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/microsoft.operationalInsights/workspaces/logAnalyticsWorkspaceName" \
        --fabric-controller-id "/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.ManagedNetworkFabric/networkFabricControllers/fabricControllerName" \
        --managed-resource-group-configuration name="my-managed-rg" --tags key1="myvalue1" key2="myvalue2" \
        --resource-group <Resource Group Name> --mi-user-assigned "/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myUAI"
  • Adicionar uma identidade atribuída pelo sistema ao Gerenciador de Clusters
        az networkcloud clustermanager update --name <Cluster Manager Name> --resource-group <Resource Group Name> --mi-system-assigned
  • Adicionar uma identidade atribuída pelo usuário ao Gerenciador de Cluster
        az networkcloud clustermanager update --name <Cluster Manager Name> --resource-group <Resource Group Name> \
        --mi-user-assigned "/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myUAI"

Obter a ID da entidade de segurança para a identidade gerenciada

Depois que uma identidade gerenciada for configurada, use a CLI para exibir a identidade e os dados de ID da entidade de segurança associados no gerenciador de cluster.

Exemplo:

az networkcloud clustermanager show --ids /subscriptions/<Subscription ID>/resourceGroups/<Cluster Manager Resource Group Name>/providers/Microsoft.NetworkCloud/clusterManagers/<Cluster Manager Name>

Exemplo de identidade atribuída pelo sistema:

    "identity": {
        "principalId": "2cb564c1-b4e5-4c71-bbc1-6ae259aa5f87",
        "tenantId": "72f988bf-86f1-41af-91ab-2d7cd011db47",
        "type": "SystemAssigned"
    },

Exemplo de identidade atribuída pelo usuário:

    "identity": {
        "type": "UserAssigned",
        "userAssignedIdentities": {
            "/subscriptions/<subscriptionID>/resourcegroups/<resourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<userAssignedIdentityName>": {
                "clientId": "e67dd610-99cf-4853-9fa0-d236b214e984",
                "principalId": "8e6d23d6-bb6b-4cf3-a00f-4cd640ab1a24"
            }
        }
    },

Gravando atualizações de credencial em um cofre de chaves do cliente no cluster Nexus

  • Atribua a Função de Serviço de Gravador do Cofre de Chaves do Nexus do Operador. Verifique se o Controle de acesso baseado em função do Azure está selecionado como o modelo de permissão para o cofre de chaves no modo de exibição Configuração do Access. Em seguida, na exibição Controle de Acesso, selecione para adicionar uma atribuição de função.
Nome da Função ID de definição de função
Função de serviço de gravador do cofre de chaves do Nexus do operador (versão prévia) 44f0a1a8-6fea-4b35-980a-8ff50c487c97

Exemplo:

az role assignment create --assignee <Managed Identity Principal Id> --role 44f0a1a8-6fea-4b35-980a-8ff50c487c97 --scope /subscriptions/<Subscription ID>/resourceGroups/<Resource Group Name>/providers/Microsoft.KeyVault/vaults/<Key Vault Name>
  • O usuário associa o Cofre de Chaves do Cliente ao cluster do Nexus do Operador. A ID do recurso do cofre de chaves deve ser configurada no cluster e habilitada para armazenar os segredos do cluster.

Exemplo:

# Set and enable Customer Key Vault on Nexus cluster
az networkcloud cluster update --ids /subscriptions/<subscription ID>/resourceGroups/<Resource Group Name>/providers/Microsoft.NetworkCloud/clusters/<Nexus Cluster Name> --secret-archive "{key-vault-id:<Key Vault Resource ID>,use-key-vault:true}"

# Show Customer Key Vault setting (secretArchive) on the Nexus cluster
az networkcloud cluster show --ids /subscriptions/<subscription ID>/resourceGroups/<Resource Group Name>/providers/Microsoft.NetworkCloud/clusters/<Nexus Cluster Name> --query secretArchive

Para obter mais ajuda:

az networkcloud cluster update --secret-archive ?? --help

Adicionar uma permissão à identidade atribuída pelo usuário

Ao usar uma identidade atribuída pelo usuário, adicione a seguinte atribuição de função ao recurso da UAI:

  1. Abra o portal do Azure e localize a identidade atribuída pelo usuário em questão.
  2. Em IAM (Controle de acesso), clique em Adicionar atribuição de função.
  3. Selecione a Função: Operador de Identidade Gerenciada. (Consulte as permissões que a função fornece managed-identity-operator).
  4. Atribua acesso a: Usuário, grupo ou entidade de serviço.
  5. Selecione Membro: aplicativo AFOI-NC-MGMT-PME-PROD.
  6. Revise e conclua a atribuição.