Bagikan melalui


Mengonfigurasi peran Azure RBAC dengan menggunakan Azure CLI dan REST API

Dalam artikel ini, Anda mempelajari cara memberikan izin kepada aplikasi klien dan pengguna untuk mengakses Azure Health Data Services dengan menggunakan Azure Command-Line Interface (CLI) dan REST API. Langkah ini disebut sebagai penetapan peran atau kontrol akses berbasis peran Azure (RBAC). Untuk informasi selengkapnya, lihat Mengonfigurasi peran Azure RBAC.

Lihat dan unduh skrip CLI dan skrip REST API dari sampel Azure Health Data Services.

Catatan

Untuk melakukan operasi penetapan peran, pengguna (atau aplikasi klien) harus diberikan dengan izin RBAC. Hubungi administrator langganan Azure Anda untuk mendapatkan bantuan.

Penetapan peran dengan CLI

Anda dapat mencantumkan peran aplikasi dengan menggunakan nama peran atau ID GUID. Sertakan nama peran dalam tanda kutip ganda saat ada spasi di dalamnya. Untuk informasi selengkapnya, lihat Membuat daftar definisi peran 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

Penetapan peran Azure Health Data Services

Penetapan peran untuk Azure Health Data Services memerlukan nilai-nilai ini:

  • Nama peran aplikasi atau ID GUID.
  • ID perwakilan layanan untuk aplikasi pengguna atau klien.
  • Cakupan untuk penetapan peran, yaitu instans layanan Azure Health Data Services. Ini termasuk langganan, grup sumber daya, nama ruang kerja, dan nama layanan FHIR atau DICOM. Anda dapat menggunakan URL absolut atau relatif untuk cakupan. Perhatikan bahwa "/" tidak ditambahkan di awal URL relatif.
#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

Anda dapat memverifikasi status penetapan peran dari respons baris perintah atau di portal Azure.

Azure API untuk penetapan peran FHIR

Penetapan peran untuk Azure API untuk FHIR berfungsi sama. Perbedaannya adalah bahwa cakupan hanya berisi layanan FHIR dan nama ruang kerja tidak diperlukan.

#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

Penetapan peran dengan REST API

Atau, Anda dapat mengirim permintaan Put ke REST API penetapan peran secara langsung. Untuk informasi selengkapnya, lihat Menetapkan peran Azure menggunakan REST API.

Catatan

Skrip REST API dalam artikel ini didasarkan pada ekstensi Klien REST. Anda perlu merevisi variabel jika Anda berada di lingkungan yang berbeda.

API memerlukan nilai-nilai ini:

  • ID penugasan, yang merupakan nilai GUID yang secara unik mengidentifikasi transaksi. Anda dapat menggunakan alat seperti ekstensi Visual Studio atau Visual Studio Code untuk mendapatkan nilai GUID. Selain itu, Anda dapat menggunakan alat online seperti UUID Generator untuk mendapatkannya.
  • Versi API didukung oleh API.
  • Cakupan untuk Azure Health Data Services yang Anda berikan izin aksesnya. Ini termasuk ID langganan, nama grup sumber daya, dan nama instans layanan FHIR atau DICOM.
  • ID definisi peran untuk peran seperti Kontributor Data FHIR atau Pemilik Data DICOM. Gunakan az role definition list --name "<role name>" untuk mencantumkan ID definisi peran.
  • ID perwakilan layanan untuk pengguna atau aplikasi klien.
  • Token akses Microsoft Entra ke https://management.azure.com/, bukan Azure Health Data Services. Anda bisa mendapatkan token akses menggunakan alat yang ada atau menggunakan perintah Azure CLI, az account get-access-token --resource "https://management.azure.com/"
  • Untuk Azure Health Data Services, cakupan mencakup nama ruang kerja dan nama instans layanan 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}}"
  }
}

Untuk Azure API untuk FHIR, cakupan didefinisikan secara berbeda karena hanya mendukung layanan FHIR, dan tidak ada nama ruang kerja yang diperlukan.

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

Mencantumkan instans layanan Azure Health Data Services

Secara opsional, Anda bisa mendapatkan daftar layanan Azure Health Data Services, atau Azure API untuk FHIR. Versi API didasarkan pada Azure Health Data Services, bukan versi untuk REST API penetapan peran.

Untuk Azure Health Data Services, tentukan ID langganan, nama grup sumber daya, nama ruang kerja, layanan FHIR atau DICOM, dan versi 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

Untuk Azure API untuk FHIR, tentukan ID langganan dan versi 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

Setelah memberikan izin yang tepat ke aplikasi klien, Anda dapat mengakses Azure Health Data Services di aplikasi Anda.

Langkah berikutnya

Akses menggunakan Klien REST

Catatan

FHIR® adalah merek dagang terdaftar HL7 dan digunakan dengan izin HL7.

DICOM® adalah merek dagang terdaftar dari Asosiasi Produsen Listrik Nasional untuk publikasi Standar yang berkaitan dengan komunikasi digital informasi medis.