Udostępnij za pośrednictwem


Konfigurowanie ról RBAC platformy Azure przy użyciu interfejsu wiersza polecenia platformy Azure i interfejsu API REST

Z tego artykułu dowiesz się, jak udzielić uprawnień aplikacjom klienckim i użytkownikom w celu uzyskania dostępu do usług Azure Health Data Services przy użyciu interfejsu wiersza polecenia platformy Azure i interfejsu API REST. Ten krok jest określany jako przypisanie roli lub kontrola dostępu oparta na rolach (RBAC) platformy Azure. Aby uzyskać więcej informacji, zobacz Konfigurowanie roli RBAC platformy Azure.

Wyświetlanie i pobieranie skryptów interfejsu wiersza polecenia i skryptów interfejsu API REST z przykładów usług Azure Health Data Services.

Uwaga

Aby wykonać operację przypisania roli, użytkownik (lub aplikacja kliencka) musi mieć uprawnienia RBAC. Skontaktuj się z administratorami subskrypcji platformy Azure, aby uzyskać pomoc.

Przypisania ról za pomocą interfejsu wiersza polecenia

Role aplikacji można wyświetlić przy użyciu nazw ról lub identyfikatorów GUID. Uwzględnij nazwę roli w podwójnych cudzysłowach, gdy znajdują się w niej spacje. Aby uzyskać więcej informacji, zobacz Wyświetlanie listy definicji ról platformy 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

Przypisanie roli usługi Azure Health Data Services

Przypisania ról dla usług Azure Health Data Services wymagają następujących wartości:

  • Nazwa roli aplikacji lub identyfikator GUID.
  • Identyfikator jednostki usługi dla użytkownika lub aplikacji klienckiej.
  • Zakres przypisania roli, czyli wystąpienia usługi Azure Health Data Services. Obejmuje ona subskrypcję, grupę zasobów, nazwę obszaru roboczego oraz nazwę usługi FHIR lub DICOM. Dla zakresu można użyć bezwzględnego lub względnego adresu URL. Należy pamiętać, że wartość "/" nie jest dodawana na początku względnego adresu URL.
#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

Stan przypisania roli można sprawdzić w odpowiedzi wiersza polecenia lub w witrynie Azure Portal.

Przypisywanie roli interfejsu API platformy Azure dla standardu FHIR

Przypisania ról dla usługi Azure API for FHIR działają podobnie. Różnica polega na tym, że zakres zawiera tylko usługę FHIR, a nazwa obszaru roboczego nie jest wymagana.

#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

Przypisania ról za pomocą interfejsu API REST

Alternatywnie możesz wysłać żądanie Put do interfejsu API REST przypisania roli bezpośrednio. Aby uzyskać więcej informacji, zobacz Przypisywanie ról platformy Azure przy użyciu interfejsu API REST.

Uwaga

Skrypty interfejsu API REST w tym artykule są oparte na rozszerzeniu klienta REST. Jeśli jesteś w innym środowisku, musisz skorygować zmienne.

Interfejs API wymaga następujących wartości:

  • Identyfikator przypisania, czyli wartość identyfikatora GUID, która jednoznacznie identyfikuje transakcję. Aby uzyskać wartość identyfikatora GUID, można użyć narzędzi, takich jak program Visual Studio lub rozszerzenie programu Visual Studio Code. Ponadto możesz użyć narzędzi online, takich jak generator UUID, aby go pobrać.
  • Wersja interfejsu API obsługiwana przez interfejs API.
  • Zakres usług Azure Health Data Services, do których udzielasz uprawnień dostępu. Zawiera identyfikator subskrypcji, nazwę grupy zasobów oraz nazwę wystąpienia usługi FHIR lub DICOM.
  • Identyfikator definicji roli dla ról, takich jak współautor danych FHIR lub właściciel danych DICOM. Użyj az role definition list --name "<role name>" polecenia , aby wyświetlić listę identyfikatorów definicji roli.
  • Identyfikator jednostki usługi dla użytkownika lub aplikacji klienckiej.
  • Microsoft Entra token dostępu do https://management.azure.com/usługi , a nie usługi Azure Health Data Services. Token dostępu można uzyskać przy użyciu istniejącego narzędzia lub polecenia interfejsu wiersza polecenia platformy Azure. az account get-access-token --resource "https://management.azure.com/"
  • W przypadku usług Azure Health Data Services zakres obejmuje nazwę obszaru roboczego i nazwę wystąpienia usługi 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}}"
  }
}

W przypadku usługi Azure API for FHIR zakres jest definiowany inaczej, ponieważ obsługuje tylko usługę FHIR i nie jest wymagana żadna nazwa obszaru roboczego.

### 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}}"
  }
}

Wyświetlanie listy wystąpień usługi Azure Health Data Services

Opcjonalnie możesz uzyskać listę usług Azure Health Data Services lub Azure API for FHIR. Wersja interfejsu API jest oparta na usługach Azure Health Data Services, a nie wersji interfejsu API REST przypisania roli.

W przypadku usług Azure Health Data Services określ identyfikator subskrypcji, nazwę grupy zasobów, nazwę obszaru roboczego, usługi FHIR lub DICOM oraz wersję interfejsu 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

W przypadku usługi Azure API for FHIR określ identyfikator subskrypcji i wersję interfejsu 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

Po udzieleniu odpowiednich uprawnień aplikacji klienckiej możesz uzyskać dostęp do usług Azure Health Data Services w aplikacjach.

Następne kroki

Dostęp przy użyciu klienta REST

Uwaga

FHIR® jest zastrzeżonym znakiem towarowym HL7 i jest używany z uprawnieniem HL7.

DICOM® jest zastrzeżonym znakiem towarowym National Electrical Manufacturers Association for its Standards publikacji odnoszących się do cyfrowej komunikacji informacji medycznych.