Bagikan melalui


Mengonfigurasi peran Azure RBAC menggunakan Azure CLI dan REST API

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

Anda dapat melihat dan mengunduh skrip CLI dan skrip REST API dari sampel Azure Health Data Services.

Catatan

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

Penetapan peran dengan CLI

Anda dapat mencantumkan peran aplikasi 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 berikut.

  • 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 juga berfungsi. 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 harus merevisi variabel jika Berada di lingkungan yang berbeda.

API memerlukan nilai berikut:

  • ID Penugasan, yang merupakan nilai GUID yang secara unik mengidentifikasi transaksi. Anda dapat menggunakan alat seperti Visual Studio atau ekstensi Visual Studio Code untuk mendapatkan nilai GUID. Selain itu, Anda dapat menggunakan alat online seperti Generator UUID untuk mendapatkannya.
  • Versi API yang 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.
  • Azure AD token akses 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 menyertakan 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 sedikit berbeda karena hanya mendukung layanan FHIR, dan tidak diperlukan nama ruang kerja.

### 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. Perhatikan bahwa 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

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

Langkah berikutnya

Dalam artikel ini, Anda mempelajari cara memberikan izin ke aplikasi klien menggunakan Azure CLI dan REST API. Untuk informasi tentang cara mengakses Azure Health Data Services menggunakan Ekstensi Klien REST di Visual Studio Code, lihat

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