Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Use as identidades gerenciadas do Microsoft Entra para dar permissão ao Azure CycleCloud para gerenciar clusters em sua assinatura. Essa abordagem serve como uma alternativa ao uso de um service principal. Atribua identidades gerenciadas a VMs do CycleCloud para fornecer acesso a recursos do Azure, como Armazenamento, Cofre de Chaves ou Registros de Contêiner do Azure.
Permissões de VM do CycleCloud com identidade gerenciada
O CycleCloud automatiza muitas chamadas para o Azure Resource Manager para gerenciar clusters HPC. Essa automação precisa de certas permissões para o CycleCloud. Você pode conceder esse acesso ao CycleCloud configurando uma entidade de serviço ou atribuindo uma identidade gerenciada à VM do CycleCloud.
Recomendamos o uso de uma Identidade Gerenciada Atribuída pelo Sistema ou User-Assigned Identidade Gerenciada para conceder essas permissões em vez de um Principal de Serviço.
Quando você instala o Azure CycleCloud em uma VM do Azure e atribui uma Identidade Gerenciada à VM, a caixa de diálogo Adicionar Assinatura funciona de forma um pouco diferente. A caixa de diálogo habilita e pré-seleciona a opção de autenticação de Identidade Gerenciada . Ele também preenche o ID da subscrição com a subscrição para a VM do host.
Você ainda pode inserir o conjunto padrão de credenciais selecionando a opção de autenticação Registro de Aplicativo. Quando você seleciona essa opção, os campos padrão aparecem no formulário. Também pode utilizar um ID de Subscrição diferente; o valor fornecido é apenas por conveniência.
Ao usar uma Identidade Gerenciada Atribuída pelo Sistema, deixe o campo ID do Cliente em branco. Mas quando você usa o CycleCloud com uma Identidade Gerenciada User-Assigned, defina o ClientID como o ClientID da Identidade Gerenciada específica que você deseja para orquestração de cluster.
Acesso ao cacifo de armazenamento
Além de usar uma identidade gerida para a orquestração de clusters na VM do CycleCloud, pode configurar o CycleCloud para atribuir uma identidade gerida atribuída pelo utilizador a clusters para acesso à conta de armazenamento e ao cofre a partir dos nós do cluster. Essa abordagem usa a identidade gerenciada atribuída pelo usuário em vez de tokens SAS derivados da chave de acesso compartilhada da conta de armazenamento.
Para configurar clusters para usar uma identidade gerida pelo utilizador em vez da chave de acesso partilhada, crie uma identidade gerida pelo utilizador dedicada com acesso ao Leitor de Dados de Blob de Armazenamento ao nível da conta de armazenamento. Primeiro, crie a conta de armazenamento e a identidade gerenciada atribuída pelo usuário em sua assinatura do Azure. Em seguida, na sessão Configuração do Cofre de Armazenamento da janela de diálogo Adicionar Assinatura, na lista suspensa Identidade do Cofre selecione a nova identidade gerenciada e, na lista suspensa Conta de Armazenamento selecione a conta de armazenamento.
Criar uma função personalizada e uma identidade gerenciada para o CycleCloud
A opção mais simples que fornece direitos de acesso suficientes é atribuir as funções Contributor e Storage Blob Data Contributor à assinatura da VM do CycleCloud como uma identidade gerida atribuída pelo sistema. No entanto, a função tem um nível de privilégio mais alto do que o Contributor CycleCloud exige. Você pode criar e atribuir uma função personalizada à VM. Da mesma forma, atribua a Storage Blob Data Contributor função no escopo da conta de armazenamento em vez do escopo da assinatura se você já tiver criado a conta de armazenamento.
Esta função abrange todos os recursos do CycleCloud:
{
"assignableScopes": [
"/subscriptions/<SubscriptionId>"
],
"description": "CycleCloud Orchestrator Role",
"permissions": [
{
"actions": [
"Microsoft.Authorization/*/read",
"Microsoft.Authorization/roleAssignments/*",
"Microsoft.Authorization/roleDefinitions/*",
"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/*/read",
"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/write",
"Microsoft.Resources/subscriptions/resourceGroups/delete",
"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/blobServices/containers/delete",
"Microsoft.Storage/storageAccounts/blobServices/containers/read",
"Microsoft.Storage/storageAccounts/blobServices/containers/write",
"Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey/action",
"Microsoft.Storage/storageAccounts/read",
"Microsoft.Storage/storageAccounts/listKeys/action",
"Microsoft.Storage/storageAccounts/write"
],
"dataActions": [
"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete",
"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read",
"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write",
"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/move/action",
"Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action"
],
"notActions": [],
"notDataActions": []
}
],
"Name": "CycleCloud <SubscriptionId>",
"roleType": "CustomRole",
"type": "Microsoft.Authorization/roleDefinitions"
}
Certifique-se de substituir <SubscriptionId> pelo seu ID de assinatura. Você define o escopo dessa função para uma assinatura, mas pode esboçá-la para um único grupo de recursos, se preferir. O nome deve ser exclusivo para o locatário.
Important
Para usar uma função personalizada, você precisa de uma licença do Microsoft Entra ID P1. Para obter mais informações sobre licenças, consulte Planos e preços do Microsoft Entra.
Permissões opcionais
Se você estiver definindo o escopo do CycleCloud para usar um único grupo de recursos para cada cluster, poderá remover as seguintes permissões de actions:
"Microsoft.Resources/subscriptions/resourceGroups/write",
"Microsoft.Resources/subscriptions/resourceGroups/delete",
Se você não estiver usando o CycleCloud para atribuir identidades gerenciadas às VMs que ele cria em clusters, poderá remover as seguintes permissões de actions:
"Microsoft.Authorization/*/read",
"Microsoft.Authorization/roleAssignments/*",
"Microsoft.Authorization/roleDefinitions/*",
Advertência
As versões futuras do CycleCloud exigem a capacidade de atribuir identidades gerenciadas a VMs. Não recomendamos remover essas permissões.
Criação da função
Você pode criar uma função a partir das definições de função usando a CLI do Azure. Use essa função para criar uma definição de função dentro do locatário do Azure. Quando a função existir no locatário, atribua a função a uma identidade com o escopo adequado.
O exemplo a seguir mostra 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 definida como escopo para a identidade. Você pode usá-lo com uma VM.
Atribuindo funções a VMs de cluster com identidade gerenciada
Os nós de cluster geralmente precisam de acesso aos recursos do Azure. Por exemplo, muitos clusters exigem acesso ao Armazenamento do Azure, ao Cofre da Chave ou aos Registros de Contêiner do Azure para executar sua carga de trabalho. É altamente recomendável usar uma User-Assigned Managed Identity para fornecer credenciais de acesso em vez de passar segredos ou credenciais para o nó por meio da configuração do cluster.
Você pode configurar identidades gerenciadas atribuídas pelo usuário nas VMs de cluster usando a Azure.Identities propriedade node. Defina a propriedade Azure.Identities como uma lista separada por vírgulas de cadeias de caracteres de ID de recurso de identidade gerenciado:
[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
...