Partilhar via


Utilizar Identidades Geridas

Azure AD identidades geridas podem ser utilizadas para permitir que o Azure CycleCloud faça a gestão de clusters na sua subscrição (como alternativa à utilização de um Principal de Serviço). Também podem ser atribuídas a VMs cycleCloud para fornecer acesso aos recursos do Azure (como Armazenamento, Key Vault ou Azure Container Registries).

Permissões de VM do CycleCloud com Identidade Gerida

O CycleCloud automatiza muitas chamadas para o Azure Resource Manager para fins de gestão de clusters HPC. Esta automatização requer que determinadas permissões sejam concedidas ao CycleCloud. Este acesso pode ser concedido ao CycleCloud ao configurar um Principal de Serviço ou ao atribuir uma Identidade Gerida à VM CycleCloud.

Geralmente, é recomendado utilizar uma Identidade Gerida Atribuída pelo Sistema ou Atribuída pelo Utilizador para conceder essas permissões em vez de um Principal de Serviço.

Quando o Azure CycleCloud tiver sido instalado numa VM do Azure com uma Identidade Gerida atribuída, a caixa de diálogo Criar Conta de Fornecedor de Cloud terá um comportamento ligeiramente diferente. Haverá uma nova caixa de verificação para a Identidade Gerida e o ID da Subscrição será pré-preenchido com a subscrição da VM anfitriã.

Adicionar Identidades Geridas de Subscrição

Adicionar Identidades Geridas de Subscrição

Ainda é possível introduzir o conjunto padrão de credenciais ao simplesmente desmarcar a caixa de verificação Identidade Gerida . Ao fazê-lo, os campos padrão serão adicionados ao formulário. Além disso, é perfeitamente aceitável utilizar um ID de Subscrição separado; o valor fornecido é apenas por conveniência.

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

A opção mais simples (com direitos de acesso suficientes) é atribuir a Função de Contribuidor da Subscrição à VM cycleCloud como System-Assigned Identidade Gerida. No entanto, a Função de Contribuidor tem um nível de privilégio superior ao necessário para o CycleCloud. Pode ser criada e atribuída uma Função personalizada à VM.

É publicada abaixo uma política suficiente para a maioria das funcionalidades do CycleCloud.

{
    "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.MarketplaceOrdering/offertypes/publishers/offers/plans/agreements/read",
          "Microsoft.MarketplaceOrdering/offertypes/publishers/offers/plans/agreements/write",
          "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

A utilização de uma função personalizada requer uma licença de Azure AD Premium P1. Para encontrar a licença certa para os seus requisitos, consulte Comparar as funcionalidades disponíveis em geral das edições Gratuita, Básica e Premium.

Permissões Opcionais

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

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

Para ativar o CycleCloud para criar e gerir Grupos de Recursos por cluster (recomendado, se permitido por política), adicione o seguinte "actions":

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

Criar a Função

Uma função pode ser criada a partir das definições de função através da CLI do Azure . Utilize esta função para criar uma definição de função no Inquilino do Azure. Assim que a função existir no inquilino, atribua a função a uma identidade com o âmbito adequado.

Segue-se o fluxo básico com 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 está atribuída e confinada à identidade e pode ser utilizada com uma VM.

Atribuir Funções a VMs de Cluster com Identidade Gerida

É comum os nós de cluster exigirem acesso aos Recursos do Azure. Por exemplo, muitos clusters requerem acesso ao Armazenamento do Azure, Key Vault ou Azure Container Registries para executar a carga de trabalho. Recomenda-se vivamente que transmita as credenciais de acesso necessárias através de uma Identidade Gerida Atribuída pelo Utilizador em vez de transmitir segredos/credenciais para o nó através da configuração do cluster.

User-Assigned identidades geridas podem ser configuradas nas VMs do cluster com a propriedade do Azure.Identities nó. O valor da Azure.Identities propriedade é uma lista separada por vírgulas de cadeias de ID de Recurso de Identidade Gerida:

[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
...