Configurer des rôles RBAC Azure à l’aide d’Azure CLI et de l’API REST
Dans cet article, vous allez découvrir comment accorder des autorisations aux applications clientes et aux utilisateurs pour accéder aux Services de données de santé Azure à l’aide de l’interface de ligne de commande (CLI) Azure et de l’API REST. Cette étape est appelée attribution de rôle ou contrôle d’accès en fonction du rôle (RBAC) Azure. Pour plus d’informations, consultez Configurer un rôle RBAC Azure.
Affichez et téléchargez les scripts CLI et les scripts d’API REST à partir de Exemples des Services de données de santé Azure.
Remarque
Pour effectuer l’opération d’attribution de rôle, vous devez accorder des autorisations RBAC à l’utilisateur (ou à l’application cliente). Pour obtenir de l’aide, contactez les administrateurs de votre abonnement Azure.
Attributions de rôles avec l’interface CLI
Vous pouvez répertorier les rôles d’application à l’aide de noms de rôles ou d’ID GUID. Incluez le nom du rôle entre guillemets doubles lorsqu’il comporte des espaces. Pour plus d’informations, consultez Répertorier les définitions de rôle 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
Attribution de rôle Services de données de santé Azure
Les attributions de rôles pour Services de données de santé Azure nécessitent ces valeurs :
- Nom du rôle d’application ou ID GUID.
- ID du principal de service pour l’utilisateur ou l’application cliente.
- Étendue de l’attribution de rôle, autrement dit, l’instance des Services de données de santé Azure. Cela inclut l’abonnement, le groupe de ressources, le nom de l’espace de travail et le nom du service FHIR ou DICOM. Vous pouvez utiliser l’URL absolue ou relative pour l’étendue. Notez que « / » n’est pas ajouté au début de l’URL relative.
#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
Vous pouvez vérifier l’état de l’attribution de rôle à partir de la réponse de ligne de commande ou dans le portail Azure.
Attribution de rôle d’API Azure pour FHIR
Les attributions de rôles pour l’API Azure pour FHIR fonctionnent de la même façon. La différence est que l’étendue contient le service FHIR uniquement, et que le nom de l’espace de travail n’est pas obligatoire.
#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
Attributions de rôles avec l’API REST
En guise d’alternative, vous pouvez envoyer directement une requête Put à l’API REST d’attribution de rôle. Pour plus d’informations, consultez Attribuer des rôles Azure à l’aide de l’API REST.
Remarque
Les scripts d’API REST de cet article sont basés sur l’extension REST Client. Vous devez réviser les variables si vous êtes dans un autre environnement.
L’API nécessite ces valeurs :
- ID d’affectation, qui est une valeur GUID identifiant de façon unique la transaction. Vous pouvez utiliser des outils tels que Visual Studio ou l’extension Visual Studio Code pour obtenir une valeur GUID. Vous pouvez également utiliser des outils en ligne tels que UUID Generator pour l’obtenir.
- Version de l’API prise en charge par l’API.
- Étendue pour les Services de données de santé Azure pour laquelle vous accordez des autorisations d’accès. Cela inclut l’ID d’abonnement, le nom du groupe de ressources, et le nom de l’instance de service FHIR ou DICOM.
- ID de définition de rôle pour les rôles tels que Contributeur de données FHIR ou Propriétaire des données DICOM. Utilisez
az role definition list --name "<role name>"
pour répertorier les ID de définition de rôle. - ID du principal de service pour l’utilisateur ou l’application cliente.
- Jeton d’accès Microsoft Entra à
https://management.azure.com/
, et non aux Services de données de santé Azure. Vous pouvez obtenir le jeton d’accès à l’aide d’un outil existant ou de la commande Azure CLI,az account get-access-token --resource "https://management.azure.com/"
. - Pour les Services de données de santé Azure, l’étendue inclut le nom de l’espace de travail et le nom de l’instance de service 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}}"
}
}
Pour l’API Azure pour FHIR, l’étendue est définie différemment, car elle prend uniquement en charge le service FHIR, et aucun nom d’espace de travail n’est requis.
### 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}}"
}
}
Répertorier les instances de service des Services de données de santé Azure
Si vous le souhaitez, vous pouvez obtenir la liste des instances des Services de données de santé Azure, ou de l’API Azure pour FHIR. La version de l’API est basée sur les Services de données de santé Azure, et non sur la version de l’API REST d’attribution de rôle.
Pour les Services de données de santé Azure, spécifiez l’ID d’abonnement, le nom du groupe de ressources, le nom de l’espace de travail, les services FHIR ou DICOM et la version de l’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
Pour l’API Azure pour FHIR, spécifiez l’ID d’abonnement et la version de l’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
Après avoir accordé des autorisations appropriées à l’application cliente, vous pouvez accéder aux Services de données de santé Azure dans vos applications.