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.
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de