Gerir permissões para restaurar uma conta DB da Azure Cosmos

APLICA A: SQL API Azure Cosmos DB API para MongoDB

O Azure Cosmos DB permite-lhe isolar e restringir as permissões de restauro para uma conta de backup contínua a um papel específico ou a um principal. O proprietário da conta pode desencadear uma restauração e atribuir uma função a outros principais para realizar a operação de restauro. Estas permissões podem ser aplicadas no âmbito de subscrição ou mais granularmente no âmbito da conta de origem, tal como mostrado na imagem seguinte:

Lista de funções necessárias para executar a operação de restauro.

O âmbito é um conjunto de recursos que têm acesso, para aprender mais sobre os âmbitos, ver a documentação do Azure RBAC. No Azure Cosmos DB, os âmbitos aplicáveis são a conta de subscrição e base de dados de origem para a maioria dos casos de utilização. O principal responsável pelas ações de restauro deve ter permissões de escrita para o grupo de recursos de destino.

Atribuir funções para restauro utilizando o portal Azure

Para efetuar uma restauração, um utilizador ou um principal precisa da permissão para restaurar (que é a permissão de restauro/ação), e permissão para providenciar uma nova conta (isto é, permissão de escrita). Para conceder estas permissões, o proprietário pode atribuir o CosmosRestoreOperator e Cosmos DB Operator construído em funções a um principal.

  1. Inscreva-se no portal Azure

  2. Navegue para a sua subscrição e vá ao separador Access Control (IAM) e selecione Add > Fun assignment

  3. No painel de atribuição de funções Add, para o campo Role, selecione o papel cosmosRestoreOperator. Escolha o utilizador, grupo ou um principal de serviço para o acesso do Designado ao campo e procure o nome de um utilizador ou iD de e-mail, como mostrado na imagem seguinte:

    Atribua funções de Operador CosmosRestoreOperator e Cosmos DB.

  4. Selecione Guardar para conceder a permissão de restauro/ação.

  5. Repita o passo 3 com a função de operador de DB cosmos para conceder a permissão de escrita. Ao atribuir este papel a partir do portal Azure, concede a permissão de restauro a toda a subscrição.

Âmbitos de permissão

Âmbito Exemplo
Subscrição /subscrições/00000000-0000-0000-0000-0000-0000000000000000000
Grupo de recursos /subscrições/00000000-0000-0000-0000-0000000000000000/resourceGroups/Exemplo-cosmosdb-rg
Recurso de conta restaurador cosmosDB /subscrições/00000000-0000-0000-0000-0000000000000000/fornecedores/Microsoft.DocumentDB/localizações/West US/restorableDatabaseAccounts/23e99a35-cd36-4df4-9614-f767a03b9995

O recurso de conta restaurador pode ser extraído da saída do az cosmosdb restorable-database-account list --name <accountname> comando em CLI ou Get-AzCosmosDBRestorableDatabaseAccount -DatabaseAccountName <accountname> cmdlet em PowerShell. O atributo de nome na saída representa instanceID a conta resmável.

Permissões

As permissões seguintes são necessárias para realizar as diferentes atividades relativas à restauração para contas contínuas de modo de backup:

Nota

A permissão pode ser atribuída à conta de base de dados restauradora no âmbito da conta ou no âmbito de subscrição. A atribuição de permissões no âmbito do grupo de recursos não é suportada.

Permissão Impacto Âmbito mínimo Âmbito máximo
Microsoft.Resources/deployments/validate/action, Microsoft.Resources/deployments/write Estas permissões são necessárias para a implementação do modelo ARM para criar a conta restaurada. Consulte a permissão de amostra RestorableAction abaixo para saber como definir esta função. Não aplicável Não aplicável
Microsoft.DocumentDB/databaseAccounts/write Esta permissão é necessária para restaurar uma conta em um grupo de recursos Grupo de recursos sob o qual a conta restaurada é criada. Subscrição sob a qual a conta restaurada é criada
Microsoft.DocumentDB/locations/restorableDatabaseAccounts/restore/action
Não pode escolher o grupo de recursos como o âmbito de permissão.
Esta permissão é exigida no âmbito da conta de conta de base de dados restauradora de origem para permitir a repor as ações a serem realizadas na sua base. O recurso RestorableDatabaseAccount pertencente à conta de origem que está a ser restaurada. Este valor é também dado pela ID propriedade do recurso de conta de base de dados restaurador. Um exemplo de conta restauradora é /subscrições/subscriçõesId/fornecedores/Microsoft.Doc<guid-instanceid> umentDB/locations/regionName/restorableDatabaseAccounts/ A assinatura que contém a conta de base de dados restauradora.
Microsoft.DocumentDB/locations/restorableDatabaseAccounts/read
Não pode escolher o grupo de recursos como o âmbito de permissão.
Esta permissão é exigida no âmbito da conta de base de dados de origem para listar as contas de base de dados que podem ser restauradas. O recurso RestorableDatabaseAccount pertencente à conta de origem que está a ser restaurada. Este valor é também dado pela ID propriedade do recurso de conta de base de dados restaurador. Um exemplo de conta restauradora é /subscrições/subscriçõesId/fornecedores/Microsoft.Doc<guid-instanceid> umentDB/locations/regionName/restorableDatabaseAccounts/ A assinatura que contém a conta de base de dados restauradora.
Microsoft.DocumentDB/locations/restorableDatabaseAccounts/*/read
Não pode escolher o grupo de recursos como o âmbito de permissão.
Esta permissão é exigida no âmbito da conta restauradora de origem para permitir a leitura de recursos restauradores, tais como lista de bases de dados e contentores para uma conta restauradora. O recurso RestorableDatabaseAccount pertencente à conta de origem que está a ser restaurada. Este valor é também dado pela ID propriedade do recurso de conta de base de dados restaurador. Um exemplo de conta restauradora é /subscrições/subscriçõesId/fornecedores/Microsoft.Doc<guid-instanceid> umentDB/locations/regionName/restorableDatabaseAccounts/ A assinatura que contém a conta de base de dados restauradora.

Cenários de atribuição de funções do Azure CLI para restaurar em diferentes âmbitos

As funções com permissão podem ser atribuídas a diferentes âmbitos para obter controlo granular sobre quem pode realizar a operação de restauro dentro de uma subscrição ou de uma determinada conta.

Atribuir capacidade para restaurar a partir de qualquer conta restauradora numa subscrição

Atribuir o CosmosRestoreOperator papel incorporado ao nível de subscrição

az role assignment create --role "CosmosRestoreOperator" --assignee <email> –scope /subscriptions/<subscriptionId>

Atribuir capacidade de restauro a partir de uma conta específica

  • Atribua um utilizador a agir no grupo de recursos específico. Esta ação é necessária para criar uma nova conta no grupo de recursos.

  • Atribua o papel incorporado cosmosRestoreOperator à conta de base de dados específica que precisa de ser restaurada. No seguinte comando, o âmbito para o RestorableDatabaseAccount é recuperado da ID propriedade na saída de az cosmosdb restorable-database-account (se utilizar CLI) ou Get-AzCosmosDBRestorableDatabaseAccount (se utilizar o PowerShell).

    az role assignment create --role "CosmosRestoreOperator" --assignee <email> –scope <RestorableDatabaseAccount>
    

Atribua capacidade para restaurar a partir de qualquer conta de origem num grupo de recursos.

Esta operação não está suportada neste momento.

Criação de função personalizada para restaurar a ação com o CLI

O proprietário da subscrição pode fornecer a permissão para restaurar qualquer outra identidade AD AZure. A permissão de restauro baseia-se na ação: Microsoft.DocumentDB/locations/restorableDatabaseAccounts/restore/action e deve ser incluída na sua permissão de restauro. Há um papel incorporado chamado CosmosRestoreOperator que tem este papel incluído. Pode atribuir a permissão usando esta função incorporada ou criar uma função personalizada.

A RestaurarableAction abaixo representa um papel personalizado. Tens de criar explicitamente este papel. O modelo JSON a seguir cria um papel personalizado RestorableAction com permissão de restauro:

{
  "assignableScopes": [
    "/subscriptions/23587e98-b6ac-4328-a753-03bcd3c8e744"
  ],
  "description": "Can do a restore request for any Cosmos DB database account with continuous backup",
  "permissions": [
    {
      "actions": [
        "Microsoft.Resources/deployments/validate/action",
        "Microsoft.DocumentDB/databaseAccounts/write",
        "Microsoft.Resources/deployments/write",  
        "Microsoft.DocumentDB/locations/restorableDatabaseAccounts/restore/action",
        "Microsoft.DocumentDB/locations/restorableDatabaseAccounts/read",
        "Microsoft.DocumentDB/locations/restorableDatabaseAccounts/*/read"
        ],
        "dataActions": [],
        "notActions": [],
        "notDataActions": []
      }
    ],
    "Name": "RestorableAction",
    "roleType": "CustomRole"
}

Em seguida, utilize o seguinte comando de implementação do modelo para criar uma função com a permissão de restauro usando o modelo ARM:

az role definition create --role-definition <JSON_Role_Definition_Path>

Passos seguintes