Azure Synapse Analytics(작업공간): 배포 및 디버깅 - 섹션 2

인용문:


에서 우리는 ARM 템플릿의 기본 구조와 이해,synapse analytics 작업 영역의 매개 변수를 이해했다.이 글은 API를 통해synapse analytics 작업 영역을 보호하는 방법을 볼 수 있습니다.

다양한 유형의 API:


Azure Synapse 작업공간 관리는 두 가지 다른 것을 사용할 수 있습니다REST APIs
  • 관리 API
  • 데이터 평면 API
  • 일반적으로 모든 azure 자원에 대해 우리는 REST API, 즉 관리 API를 사용한다.synapse 작업 영역의 경우, 우리는 데이터 평면 API라고 불리는 추가 특수 API를 가지고 있다.

    관리 API:

  • ARM(Azure Resource Manager)을 통해 Azure Synapses 리소스를 생성하고 관리하는 RESTAPI
  • synapse 작업 영역을 창설, 업데이트, 삭제하는 등 관리 작업에 주로 사용됩니다.
  • {api-version}는 2019-06-01-미리보기
  • 여야 합니다.
  • 시청자 성명(적재령패-권한 수여용)은 "https://management.core.windows.net" 또는 "https://management.azure.com"
  • 기본 API 노드가
  • https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Synapse/workspaces/{workspaceName}
    

    데이터 평면 API:

  • REST API는 단일 Azure synapse workspace 노드 자체를 통해 Azure synapse 자원을 만들고 관리합니다.
  • 단일synapse 작업구역 조작을 관리하는 데 사용된다. 예를 들어 작업구역 역할 분배, 관리와 감시spark와 sql 작업, 데이터 흐름, 파이프, 데이터 집합, 링크 서비스, 트리거와 노트북이다.
  • {api-version}는 2019-11-01-미리보기 또는 2020-02-01-미리보기
  • 여야 합니다.
  • 시청자 성명(적재영패-권한 수여 획득용)은 "https://dev.azuresynapse.net"
  • 기본 API 노드가
  • https://<workspacename>.dev.azuresynapse.net/
    
    현재 데이터 평면 API(미리보기)에 사용할 수 있는 문서가 없습니다.단, Github docs 에서 정보를 얻을 수 있습니다.

    사용 가능한synapse 작업공간 나열 - 관리 API


    자원 그룹의synapse 작업 영역을 열거하기 위해 관리 API를 호출하는 방법을 보여 줍니다.
    참고: 이 API는 azure 문서에서 직접 시도할 수도 있습니다.다음Try It 옵션 사용

    그러나 상기 방법은 user impersonation 대신 (SPN 사용) 을 사용하여 적재 영패를 잡습니다.클라이언트 자격 증명 방법을 사용하여 이 API를 호출하는 방법을 보여 줍니다.

    적재 영패 획득 중


    우리는 JWT 영패를 얻기 위해 SPN(client\uid/client\usecret)의 client credentials 방식을 사용할 것이다.
    다음은 권한 수여 API를 호출하고 영패를 불러오는 간단한curl 명령입니다.
    참고 SPN이 RBAC 역할에 적합한지 확인합니다.다음 예제에서는 SPN에 리소스 그룹에 대한 참여자 액세스 권한이 있습니다.
    curl --request POST \
      --url https://login.microsoftonline.com/<tenant-id>/oauth2/token \
      --header 'accept:  application/json' \
      --header 'content-type: multipart/form-data;' \
      --form client_id=a35373d8-c772-4ea0-9f4b-73111376354f \
      --form 'client_secret=xxxxxxx~~2Z6Es' \
      --form grant_type=client_credentials \
      --form resource=https://management.azure.com/ \
      --form scope=Microsoft.Synapse/workspaces/read
    
    답변:
    {
      "token_type": "Bearer",
      "expires_in": "3599",
      "ext_expires_in": "3599",
      "expires_on": "1599917407",
      "not_before": "1599913507",
      "resource": "https://management.azure.com/",
      "access_token": "eyJ....."
    }
    
    불면증 캡처:

    Synapse 관리 작업공간 목록 API 호출


    이제 우리는 실제 API를 호출할 수 있는 영패를 얻었다
    curl --request GET \
      --url 'https://management.azure.com/subscriptions/<sub-id>/resourceGroups/azuresynapses/providers/Microsoft.Synapse/workspaces/?api-version=2019-06-01-preview' \
      --header 'accept:  application/json' \
      --header 'authorization: Bearer eyJ0......................' \
      --header 'content-type: application/json'
    
    답변:
    {
      "value": [
        {
          "id": "/subscriptions/<sub-id>/resourceGroups/azuresynapses/providers/Microsoft.Synapse/workspaces/azsynapse002",
          "location": "eastus",
          "name": "azsynapse002",
          "type": "Microsoft.Synapse/workspaces",
          "identity": {
            "type": "SystemAssigned",
            "principalId": "712cc76e-7dd9-4978-a259-6c2be5057d2f",
            "tenantId": "<tenant-id>"
          },
          "tags": {},
          "properties": {
            "connectivityEndpoints": {
              "web": "https://web.azuresynapse.net?workspace=%2fsubscriptions%2f<sub-id>%2fresourceGroups%2fazuresynapses%2fproviders%2fMicrosoft.Synapse%2fworkspaces%2fazsynapse002",
              "sql": "azsynapse002.sql.azuresynapse.net",
              "dev": "https://azsynapse002.dev.azuresynapse.net",
              "sqlOnDemand": "azsynapse002-ondemand.sql.azuresynapse.net"
            },
            "managedResourceGroupName": "azuresynapses",
            "privateEndpointConnections": [],
            "workspaceUID": "0fdd8032-3277-4d1b-b4c3-b069f48bd169",
            "extraProperties": {
              "IsScopeEnabled": false
            },
            "provisioningState": "Succeeded"
          }
        }
      ]
    }
    
    불면증 캡처:

    Synapse 작업공간 역할


    데이터 평면 API로 이동하기 전에synapse 작업 영역의 역할이 무엇인지 보여드릴게요.🤔. 데이터 평면 API를 사용하여 작업공간 역할을 관리하기 때문입니다.
    실제로 3가지 다른 캐릭터는 Synapse만의 캐릭터입니다. Azure 캐릭터를 바탕으로 하는 것이 아니라
  • Synapse workspace admin
  • Synapse SQL admin
  • Azure Synapse Analytics 관리자의 Apache Spark
  • 하나existing azure docs는 이 세 가지 다른 캐릭터를 상세하게 설명했다.

    작업공간 역할 액세스 관리 - 데이터 평면 API:


    이제 우리는synapse 작업 영역의 서로 다른 역할을 이해했다.이러한 역할 액세스를 데이터 평면 API를 통해 관리하는 방법을 살펴보겠습니다.

    적재 영패 획득 중


    여느 때와 마찬가지로 우리는 SPN 인증을 사용하여 승재 영패를 얻을 것이다.여기에는 몇 가지 다른 점이 있다
  • 리소스 매개변수는 client_credentials
  • 더 이상 scope 파라미터가 필요하지 않습니다
  • 참고 SPN이 Workspace Admin의 일부인지 확인합니다.
    curl --request POST \
      --url https://login.microsoftonline.com/<tenant-id>/oauth2/token \
      --header 'accept:  application/json' \
      --header 'content-type: multipart/form-data;' \
      --form client_id=a35373d8-c772-4ea0-9f4b-73111376354f \
      --form 'client_secret=xxxxxxx~~2Z6Es' \
      --form grant_type=client_credentials \
      --form resource=https://dev.azuresynapse.net
    
    답변:
    {
      "token_type": "Bearer",
      "expires_in": "3599",
      "ext_expires_in": "3599",
      "expires_on": "1599917407",
      "not_before": "1599913507",
      "resource": "https://dev.azuresynapse.net",
      "access_token": "eyJ....."
    }
    
    불면증 캡처:

    Synapse 데이터 평면 API를 호출하여 작업공간 역할에 사용자 추가


    여기서 우리는 사용자 하나를 세 캐릭터 중 하나에 추가할 것이다.이를 위해서는 2개의 작업이 필요합니다
  • 캐릭터 id 획득
  • 사용자(대상 id)를 이 캐릭터 id에 추가합니다.
  • 역할 ID 가져오기


    캐릭터 id를 얻기 위해서는 아래 단점을 사용해야 합니다
    https://<workspacename>.dev.azuresynapse.net/rbac/roles?api-version=2020-02-01-preview
    
    말아달래요.
    curl --request GET \
      --url 'https://azsynapse002.dev.azuresynapse.net/rbac/roles?api-version=2020-02-01-preview' \
      --header 'accept: application/json' \
      --header 'authorization: Bearer eyJ0' \
      --header 'content-type: application/json'
    
    답변:
    {
      "value": [
        {
          "id": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78",
          "name": "Workspace Admin",
          "isBuiltIn": true
        },
        {
          "id": "c3a6d2f1-a26f-4810-9b0f-591308d5cbf1",
          "name": "Apache Spark Admin",
          "isBuiltIn": true
        },
        {
          "id": "7af0c69a-a548-47d6-aea3-d00e69bd83aa",
          "name": "Sql Admin",
          "isBuiltIn": true
        }
      ]
    }
    
    불면증 캡처:

    역할 ID에 사용자 추가


    현재 우리는 모든 캐릭터의 캐릭터 id를 얻었다. (이 캐릭터 id는 전 세계의synapse 작업 구역에서 모두 같다.)다음 노드를 사용하여 사용자를 추가합니다.
    https://<workspacename>.dev.azuresynapse.net/rbac/roleAssignments?api-version=2020-02-01-preview
    
    #Json body Param:
    
    {
    "roleId": "<workspace role id>",
    "principalId": "<objectid of the user/group>"
    }
    
    볼륨:
    curl --request POST \
      --url 'https://azsynapse002.dev.azuresynapse.net/rbac/roleAssignments?api-version=2020-02-01-preview' \
      --header 'authorization: Bearer eyJ..............' \
      --header 'content-type: application/json' \
      --data '{
        "roleId": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78",
     "principalId": "fb1e7804-9542-4412-be66-e143a10e3b1a"
    }'
    
    답변:
    {
      "id": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78-fb1e7804-9542-4412-be66-e143a10e3b1a",
      "roleId": "6e4bf58a-b8e1-4cc3-bbf9-d73143322b78",
      "principalId": "fb1e7804-9542-4412-be66-e143a10e3b1a"
    }
    
    불면증 캡처:

    결론:


    이 글에서 우리는 순수하게 API를 사용하여synapse 작업 구역을 관리하는 멋진 방법을 보았다.이것은 자동화를 위해 넓은 공간을 열었다.이 기능들은 대부분 미리 보기 중이라는 것을 기억하세요.따라서 이러한 양수인은 존재하지 않습니다. 즉, 모든 API 단점/조작은 제가 본고에서 설명한 것과 같습니다.업데이트가 필요하다면, 나는 이 글을 업데이트하기 위해 가장 좋은 상태를 유지할 것이다.여기서 나는 데이터 평면과 유사한synapse 역할 분배 조작을 설명했다.실제로 데이터 평면 API는 이것에 그치지 않는다.본문github repo을 읽고 데이터 평면 API 작업의 모든 기능을 이해합니다.

    좋은 웹페이지 즐겨찾기