Share via


Usando identidades gerenciadas

Azure AD Identidades Gerenciadas podem ser usadas para permitir que o Azure CycleCloud gerencie clusters em sua assinatura (como alternativa ao uso de uma Entidade de Serviço). Eles também podem ser atribuídos a VMs cycleCloud para fornecer acesso aos recursos do Azure (como Armazenamento, Key Vault ou Registros de Contêiner do Azure).

Permissões de VM cycleCloud com identidade gerenciada

O CycleCloud automatiza muitas chamadas para o Resource Manager do Azure para fins de gerenciamento de clusters HPC. Essa automação requer que determinadas permissões sejam concedidas ao CycleCloud. Esse acesso pode ser concedido ao CycleCloud configurando uma Entidade de Serviço ou atribuindo uma Identidade Gerenciada à VM cycleCloud.

Geralmente, é recomendável usar uma identidade gerenciada atribuída pelo sistema ou pelo usuário para conceder essas permissões em vez de uma entidade de serviço.

Quando o Azure CycleCloud tiver sido instalado em uma VM do Azure com uma Identidade Gerenciada atribuída a ela, a caixa de diálogo Criar Conta do Provedor de Nuvem se comportará um pouco diferente. Haverá uma nova caixa de seleção para Identidade Gerenciada e a ID da Assinatura será preenchida previamente com a assinatura da VM host.

Adicionar identidades gerenciadas por assinatura

Adicionar identidades gerenciadas por assinatura

Ainda é possível inserir o conjunto padrão de credenciais simplesmente desmarcando a caixa de seleção Identidade Gerenciada . Ao fazer isso, os campos padrão serão adicionados ao formulário. Além disso, é perfeitamente aceitável usar uma ID de Assinatura separada; o valor fornecido é apenas para conveniência.

Criar uma função personalizada e uma identidade gerenciada para CycleCloud

A opção mais simples (com direitos de acesso suficientes) é atribuir a Função de Colaborador para a Assinatura à VM cycleCloud como uma identidade gerenciada System-Assigned. No entanto, a Função colaborador tem um nível de privilégio mais alto do que o CycleCloud requer. Uma Função personalizada pode ser criada e atribuída à VM.

Uma política suficiente para a maioria dos recursos do CycleCloud é postada abaixo.

{
    "assignableScopes": [
      "/"
    ],
    "description": "CycleCloud Orchestrator Role",
    "permissions": [
      {
        "actions": [
          "Microsoft.Commerce/RateCard/read",
          "Microsoft.Compute/*/read",
          "Microsoft.Compute/availabilitySets/*",
          "Microsoft.Compute/disks/*",
          "Microsoft.Compute/images/read",
          "Microsoft.Compute/locations/usages/read",
          "Microsoft.Compute/register/action",
          "Microsoft.Compute/skus/read",
          "Microsoft.Compute/virtualMachines/*",
          "Microsoft.Compute/virtualMachineScaleSets/*",
          "Microsoft.Compute/virtualMachineScaleSets/virtualMachines/*",
          "Microsoft.ManagedIdentity/userAssignedIdentities/*/assign/action",
          "Microsoft.Network/*/read",
          "Microsoft.Network/locations/*/read",
          "Microsoft.Network/networkInterfaces/read",
          "Microsoft.Network/networkInterfaces/write",
          "Microsoft.Network/networkInterfaces/delete",
          "Microsoft.Network/networkInterfaces/join/action",
          "Microsoft.Network/networkSecurityGroups/read",
          "Microsoft.Network/networkSecurityGroups/write",
          "Microsoft.Network/networkSecurityGroups/delete",
          "Microsoft.Network/networkSecurityGroups/join/action",
          "Microsoft.Network/publicIPAddresses/read",
          "Microsoft.Network/publicIPAddresses/write",
          "Microsoft.Network/publicIPAddresses/delete",
          "Microsoft.Network/publicIPAddresses/join/action",
          "Microsoft.Network/register/action",
          "Microsoft.Network/virtualNetworks/read",
          "Microsoft.Network/virtualNetworks/subnets/read",
          "Microsoft.Network/virtualNetworks/subnets/join/action",
          "Microsoft.Resources/deployments/read",
          "Microsoft.Resources/subscriptions/resourceGroups/read",
          "Microsoft.Resources/subscriptions/resourceGroups/resources/read",
          "Microsoft.Resources/subscriptions/operationresults/read",
          "Microsoft.Storage/*/read",
          "Microsoft.Storage/checknameavailability/read",
          "Microsoft.Storage/register/action",
          "Microsoft.Storage/storageAccounts/read",
          "Microsoft.Storage/storageAccounts/listKeys/action",
          "Microsoft.Storage/storageAccounts/write"
        ],
        "dataActions": [],
        "notActions": [],
        "notDataActions": []
      }
    ],
    "Name": "CycleCloud",
    "roleType": "CustomRole",
    "type": "Microsoft.Authorization/roleDefinitions"
}

Importante

O uso de uma função personalizada requer uma licença Azure AD Premium P1. Para encontrar a licença certa para seus requisitos, consulte Comparando os recursos disponíveis para o público geral das edições Gratuitas, Básicas e Premium.

Permissões opcionais

Para permitir que o CycleCloud atribua Identidades Gerenciadas a VMs criadas em clusters, adicione o seguinte "actions":

          "Microsoft.Authorization/*/read",
          "Microsoft.Authorization/roleAssignments/*",
          "Microsoft.Authorization/roleDefinitions/*",

Para permitir que o CycleCloud crie e gerencie Grupos de Recursos por cluster (recomendado, se permitido pela política), adicione o seguinte "actions":

          "Microsoft.Resources/subscriptions/resourceGroups/read",
          "Microsoft.Resources/subscriptions/resourceGroups/write",
          "Microsoft.Resources/subscriptions/resourceGroups/delete",

Criando a função

Uma função pode ser criada com base nas definições de função por meio da CLI do Azure . Use essa função para criar uma definição de função dentro do Locatário do Azure. Depois que a função existir no locatário, atribua a função a uma identidade com escopo adequado.

Abaixo está o fluxo básico usando a CLI do Azure.

# Create a custom role definition
az role definition create --role-definition role.json
# Create user identity
az identity create --name <name>
# Assign the custom role to the identity with proper scope
az role assignment create --role <CycleCloudRole> --assignee-object-id <identity-id> --scope <subscription>

Agora, a função personalizada é atribuída e com escopo para a identidade e pode ser usada com uma VM.

Atribuindo funções a VMs de cluster com identidade gerenciada

É comum que os nós de cluster exijam acesso aos Recursos do Azure. Por exemplo, muitos clusters exigem acesso ao Armazenamento do Azure, Key Vault ou Registros de Contêiner do Azure para executar sua carga de trabalho. É altamente recomendável passar as credenciais de acesso necessárias usando uma Identidade Gerenciada Atribuída pelo Usuário em vez de passar segredos/credenciais para o nó por meio da configuração do cluster.

User-Assigned Identidades Gerenciadas podem ser configuradas nas VMs do cluster usando a propriedade do Azure.Identities nó. O valor da Azure.Identities propriedade é uma lista separada por vírgulas de cadeias de caracteres de ID de Recurso de Identidade Gerenciada:

[cluster sample]
...
    [[node defaults]]
    ...
    Azure.Identities = $ManagedServiceIdentity
...

[parameters Required Settings]
...
  [[parameter ManagedServiceIdentity]]
  ParameterType = Azure.ManagedIdentity
  Label = MSI Identity
  Description = The resource ID of the Managed Service Identity to apply to the nodes
...