Compartilhar via


Configurar a função RBAC do Azure usando a CLI do Azure e a API REST

Neste artigo, você aprenderá a conceder permissões a aplicativos cliente (e usuários) para acessar os Serviços de Dados de Integridade do Azure usando a CLI (Interface Command-Line) do Azure e a API REST. Essa etapa é conhecida como "atribuição de função" ou controle de acesso baseado em função do Azure (função RBAC do Azure). Para aprimorar sua compreensão sobre as funções de aplicativo definidas para os Serviços de Dados de Integridade do Azure, consulte Configurar a função RBAC do Azure.

Você pode exibir e baixar os scripts da CLI e os scripts da API REST de exemplos dos Serviços de Dados de Integridade do Azure.

Observação

Para executar a operação de atribuição de função, o usuário (ou o aplicativo cliente) deve receber permissões RBAC. Entre em contato com os administradores de assinatura do Azure para obter assistência.

Atribuições de função com a CLI

Você pode listar funções de aplicativo usando nomes de função ou IDs guid. Inclua o nome da função entre aspas duplas quando houver espaços nele. Para saber mais, veja Lista de definições de função do Azure.

az role definition list --name "FHIR Data Contributor"
az role definition list --name 5a1fc7df-4bf1-4951-a576-89034ee01acd
az role definition list --name "DICOM Data Owner"
az role definition list --name 58a3b984-7adf-4c20-983a-32417c86fbc8

Atribuição de função dos Serviços de Dados de Integridade do Azure

As atribuições de função para os Serviços de Dados de Integridade do Azure exigem os valores a seguir.

  • Nome da função de aplicativo ou ID do GUID.
  • ID da entidade de serviço para o aplicativo usuário ou cliente.
  • Escopo para a atribuição de função, ou seja, a instância de serviço dos Serviços de Dados de Integridade do Azure. Ele inclui assinatura, grupo de recursos, nome do workspace e nome do serviço FHIR ou DICOM. Você pode usar a URL absoluta ou relativa para o escopo. Observe que "/" não é adicionado no início da URL relativa.
#Azure Health Data Services role assignment
fhirrole="FHIR Data Contributor"
dicomrole="DICOM Data Owner"
clientid=xxx
subscriptionid=xxx
resourcegroupname=xxx
workspacename=xxx
fhirservicename=xxx
dicomservicename=xxx
fhirrolescope="subscriptions/$subscriptionid/resourceGroups/$resourcegroupname/providers/Microsoft.HealthcareApis/workspaces/$workspacename/fhirservices/$fhirservicename"
dicomrolescope="subscriptions/$subscriptionid/resourceGroups/$resourcegroupname/providers/Microsoft.HealthcareApis/workspaces/$workspacename/dicomservices/$dicomservicename"

#find client app service principal id
spid=$(az ad sp show --id $clientid --query objectId --output tsv)

#assign the specified role
az role assignment create --assignee-object-id $spid --assignee-principal-type ServicePrincipal --role "$fhirrole" --scope $fhirrolescope
az role assignment create --assignee-object-id $spid --assignee-principal-type ServicePrincipal --role "$dicomrole" --scope $dicomrolescope

Você pode verificar a atribuição de função status na resposta da linha de comando ou no portal do Azure.

Atribuição de função da API do Azure para FHIR

As atribuições de função para a API do Azure para FHIR funcionam da mesma forma. A diferença é que o escopo contém apenas o serviço FHIR e o nome do workspace não é necessário.

#azure api for fhir role assignment
fhirrole="FHIR Data Contributor"
clientid=xxx
subscriptionid=xxx
resourcegroupname=xxx
fhirservicename=xxx
fhirrolescope="subscriptions/$subscriptionid/resourceGroups/$resourcegroupname/providers/Microsoft.HealthcareApis/services/$fhirservicename"

#find client app service principal id
spid=$(az ad sp show --id $clientid --query objectId --output tsv)

#assign the specified role
az role assignment create --assignee-object-id $spid --assignee-principal-type ServicePrincipal --role "$fhirrole" --scope $fhirrolescope

Atribuições de função com a API REST

Como alternativa, você pode enviar uma solicitação Put para a API REST de atribuição de função diretamente. Para obter mais informações, consulte Atribuir funções do Azure usando a API REST.

Observação

Os scripts da API REST neste artigo são baseados na extensão cliente REST . Você precisará revisar as variáveis se estiver em um ambiente diferente.

A API requer os seguintes valores:

  • ID de atribuição, que é um valor GUID que identifica exclusivamente a transação. Você pode usar ferramentas como o Visual Studio ou Visual Studio Code extensão para obter um valor guid. Além disso, você pode usar ferramentas online como o Gerador UUID para obtê-lo.
  • Versão da API compatível com a API.
  • Escopo dos Serviços de Dados de Integridade do Azure aos quais você concede permissões de acesso. Ele inclui a ID da assinatura, o nome do grupo de recursos e o nome da instância de serviço FHIR ou DICOM.
  • ID de definição de função para funções como "Colaborador de Dados FHIR" ou "Proprietário de Dados DICOM". Use az role definition list --name "<role name>" para listar as IDs de definição de função.
  • ID da entidade de serviço para o usuário ou o aplicativo cliente.
  • Azure AD token de acesso ao , não aos Serviços de Dados de Integridade do https://management.azure.com/Azure. Você pode obter o token de acesso usando uma ferramenta existente ou usando o comando da CLI do Azure, az account get-access-token --resource "https://management.azure.com/"
  • Para os Serviços de Dados de Integridade do Azure, o escopo inclui o nome do workspace e o nome da instância de serviço FHIR/DICOM.
### Create a role assignment - Azure Health Data Services (DICOM)
@roleassignmentid=xxx
@roleapiversion=2021-04-01
@roledefinitionid=58a3b984-7adf-4c20-983a-32417c86fbc8
dicomservicename-xxx
@scope=/subscriptions/{{subscriptionid}}/resourceGroups/{{resourcegroupname}}/providers/Microsoft.HealthcareApis/workspaces/{{workspacename}}/dicomservices/{{dicomservicename}}
#get service principal id
@spid=xxx
#get access token
@token=xxx

PUT https://management.azure.com/{{scope}}/providers/Microsoft.Authorization/roleAssignments/{{roleassignmentid}}?api-version={{roleapiversion}}
Authorization: Bearer {{token}}
Content-Type: application/json
Accept: application/json

{
  "properties": {
    "roleDefinitionId": "/subscriptions/{{subscriptionid}}/providers/Microsoft.Authorization/roleDefinitions/{{roledefinitionid}}",
    "principalId": "{{spid}}"
  }
}

Para a API do Azure para FHIR, o escopo é definido de forma ligeiramente diferente, pois dá suporte apenas ao serviço FHIR e nenhum nome de workspace é necessário.

### Create a role assignment - Azure API for FHIR
@roleassignmentid=xxx
@roleapiversion=2021-04-01
@roledefinitionid=5a1fc7df-4bf1-4951-a576-89034ee01acd
fhirservicename-xxx
@scope=/subscriptions/{{subscriptionid}}/resourceGroups/{{resourcegroupname}}/providers/Microsoft.HealthcareApis/services/{{fhirservicename}}
#get service principal id
@spid=xxx
#get access token
@token=xxx

PUT https://management.azure.com/{{scope}}/providers/Microsoft.Authorization/roleAssignments/{{roleassignmentid}}?api-version={{roleapiversion}}
Authorization: Bearer {{token}}
Content-Type: application/json
Accept: application/json

{
  "properties": {
    "roleDefinitionId": "/subscriptions/{{subscriptionid}}/providers/Microsoft.Authorization/roleDefinitions/{{roledefinitionid}}",
    "principalId": "{{spid}}"
  }
}

Listar instâncias de serviço dos Serviços de Dados de Integridade do Azure

Opcionalmente, você pode obter uma lista de serviços dos Serviços de Dados de Integridade do Azure ou da API do Azure para FHIR. Observe que a versão da API é baseada nos Serviços de Dados de Integridade do Azure, não na versão da API REST de atribuição de função.

Para os Serviços de Dados de Integridade do Azure, especifique a ID da assinatura, o nome do grupo de recursos, o nome do workspace, os serviços FHIR ou DICOM e a versão da API.

### Get Azure Health Data Services DICOM services
@apiversion=2021-06-01
@subscriptionid=xxx
@resourcegroupname=xxx
@workspacename=xxx

GET  https://management.azure.com/subscriptions/{{subscriptionid}}/resourceGroups/{{resourcegroupname}}/providers/Microsoft.HealthcareApis/workspaces/{{workspacename}}/dicomservices?api-version={{apiversion}}
Authorization: Bearer {{token}}
Content-Type: application/json
Accept: application/json

Para a API do Azure para FHIR, especifique a ID da assinatura e a versão da API.

### Get a list of Azure API for FHIR services
@apiversion=2021-06-01
@subscriptionid=xxx

GET  https://management.azure.com/subscriptions/{{subscriptionid}}/providers/Microsoft.HealthcareApis/services?api-version={{apiversion}}
Authorization: Bearer {{token}}
Content-Type: application/json
Accept: application/json

Agora que você concedeu permissões adequadas ao aplicativo cliente, você pode acessar os Serviços de Dados de Integridade do Azure em seus aplicativos.

Próximas etapas

Neste artigo, você aprendeu a conceder permissões a aplicativos cliente usando a CLI do Azure e a API REST. Para obter informações sobre como acessar os Serviços de Dados de Integridade do Azure usando a Extensão de Cliente REST no Visual Studio Code, consulte

FHIR® é uma marca registrada da HL7 e é usado com a permissão da HL7.