다음을 통해 공유


Azure CLI 및 REST API를 사용하여 Azure RBAC 역할 구성

이 문서에서는 Azure CLI(명령줄 인터페이스) 및 REST API를 사용하여 클라이언트 애플리케이션과 사용자에게 Azure Health Data Services에 액세스할 수 있는 권한을 부여하는 방법을 알아봅니다. 이 단계를 역할 할당 또는 Azure RBAC(역할 기반 액세스 제어)라고 합니다. 자세한 내용은 Azure RBAC 역할 구성을 참조하세요.

Azure Health Data Services 샘플에서 CLI 스크립트REST API 스크립트를 보고 다운로드합니다.

참고 항목

역할 할당 작업을 수행하려면 사용자(또는 클라이언트 애플리케이션)에 RBAC 권한을 부여해야 합니다. Azure 구독 관리자에게 도움을 요청합니다.

CLI를 사용하여 역할 할당

역할 이름 또는 GUID ID를 사용하여 애플리케이션 역할을 나열할 수 있습니다. 공백이 있는 경우 역할 이름을 큰따옴표로 묶습니다. 자세한 내용은 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

Azure Health Data Services 역할 할당

Azure Health Data Services에 대한 역할 할당에는 다음 값이 필요합니다.

  • 애플리케이션 역할 이름 또는 GUID ID
  • 사용자 또는 클라이언트 애플리케이션에 대한 서비스 주체 ID
  • 역할 할당의 범위(즉 Azure Health Data Services 서비스 인스턴스). 여기에는 구독, 리소스 그룹, 작업 영역 이름, FHIR 또는 DICOM 서비스 이름이 포함됩니다. 범위에 대해 절대 또는 상대 URL을 사용할 수 있습니다. 상대 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

명령줄 응답 또는 Azure Portal에서 역할 할당 상태를 확인할 수 있습니다.

Azure API for FHIR 역할 할당

Azure API for FHIR에 대한 역할 할당도 비슷하게 작동합니다. 차이점은 범위에 FHIR 서비스만 포함되며 작업 영역 이름은 필요하지 않다는 것입니다.

#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

REST API를 사용하는 역할 할당

또는 역할 할당 REST API에 Put 요청을 직접 보낼 수 있습니다. 자세한 내용은 REST API를 사용하여 Azure 역할 할당을 참조하세요.

참고 항목

이 문서의 REST API 스크립트는 REST 클라이언트 확장을 기준으로 합니다. 다른 환경에 있는 경우 변수를 수정해야 합니다.

이 API에는 다음 값이 필요합니다.

  • 할당 ID: 트랜잭션을 고유하게 식별하는 GUID 값. Visual Studio 또는 Visual Studio Code 확장과 같은 도구를 사용하여 GUID 값을 가져올 수 있습니다. 또한 UUID 생성기 같은 온라인 도구를 사용하여 가져올 수 있습니다.
  • API에서 지원하는 API 버전
  • 액세스 권한을 부여할 Azure Health Data Services의 범위. 여기에는 구독 ID, 리소스 그룹 이름 및 FHIR 또는 DICOM 서비스 인스턴스 이름이 포함됩니다.
  • FHIR 데이터 기여자 또는 DICOM 데이터 소유자 같은 역할에 대한 역할 정의 ID. az role definition list --name "<role name>"을 사용하여 역할 정의 ID를 나열합니다.
  • 사용자 또는 클라이언트 애플리케이션에 대한 서비스 주체 ID
  • Azure Health Data Services가 아닌 https://management.azure.com/에 대한 Microsoft Entra 액세스 토큰 기존 도구를 사용하거나 Azure CLI 명령 az account get-access-token --resource "https://management.azure.com/"을 사용하여 액세스 토큰을 가져올 수 있습니다.
  • Azure Health Data Services의 경우 범위에는 작업 영역 이름 및 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}}"
  }
}

Azure API for FHIR의 경우 범위가 FHIR 서비스만 지원하므로 다르게 정의되며, 작업 영역 이름은 필요하지 않습니다.

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

Azure Health Data Services의 서비스 인스턴스 나열

필요에 따라 Azure Health Data Services 서비스 또는 Azure API for FHIR 목록을 가져올 수 있습니다. API 버전은 역할 할당 REST API의 버전이 아닌 Azure Health Data Services를 기준으로 합니다.

Azure Health Data Services의 경우 구독 ID, 리소스 그룹 이름, 작업 영역 이름, FHIR 또는 DICOM 서비스, 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

Azure API for FHIR의 경우 구독 ID 및 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

클라이언트 애플리케이션에 적절한 권한을 부여한 후 애플리케이션에서 Azure Health Data Services에 액세스할 수 있습니다.

다음 단계

REST 클라이언트를 사용하여 액세스

참고 항목

FHIR®은 HL7의 등록 상표이며, HL7의 사용 허가 하에 사용됩니다.

DICOM®은 의료 정보의 디지털 통신과 관련된 표준 간행물에 대한 미국 전기공업회의 등록 상표입니다.