데이터 레코드의 ACL 관리

이 문서에서는 Azure Data Manager for Energy 인스턴스의 데이터 레코드에서 ACL을 추가하거나 제거하는 방법을 알아봅니다.

ACL로 데이터 그룹 만들기

Azure Cloud Shell에서 다음 curl 명령을 실행하여 Azure Data Manager for Energy 인스턴스의 특정 데이터 파티션에 새 데이터 그룹(예: data.sampledb.viewer)을 만듭니다.

요청 형식

    curl --location --request POST "https://<adme-url>/api/entitlements/v2/groups/" \
    --header 'data-partition-id: <data-partition>' \
    --header 'Authorization: Bearer <access_token>'
    --data-raw '{
       "description": "<data-group-description>",
       "name": "data.sampledb.viewer"
    }

ACL을 사용하여 레코드 만들기

요청 형식

curl --location --request PUT 'https://<adme-url>/api/storage/v2/records/' \
--header 'data-partition-id: opendes' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer <token>’ \
--header 'Content-Type: application/json' \	
--data-raw '[
  {
    "acl": {
      "owners": [
        "data.default.owners@opendes.contoso.com",
        "data.wellbore1.owner@opendes.contoso.com"
      ],
      "viewers": [
        "data.default.viewers@opendes.contoso.com"
      ]
    },
    "data": {
        "FacilityID": "Example External Facility Identifier",
        "Source": "Create Record test"
      },
    "id": "opendes:master-data--Well:999635346360",
    "kind": "osdu:wks:master-data--Well:1.0.0",
    "legal": {
      "legaltags": [
        "opendes-Test-Legal-Tag-2311232"
      ],
      "otherRelevantDataCountries": [
        "US"
      ],
      "status": "compliant"
    },
    "meta": [
      {}
    ],
    "version": 0
  }
]

샘플 응답

{
    "recordCount": 1,
    "recordIds": [
        "opendes:master-data--Well:999736019023"
    ],
    "skippedRecordIds": [],
    "recordIdVersions": [
        "opendes:master-data--Well:999736019023:1702017200855277"
    ]
}

이후 편리한 참조를 위해 응답에서 레코드 ID를 유지합니다.

ACL을 사용하여 만든 레코드 가져오기

요청 형식

curl --location 'https://<adme-url>/api/storage/v2/records/opendes:master-data--Well:999736019023' \
--header 'data-partition-id: opendes' \
--header 'Authorization: Bearer <token>’

샘플 응답

{
    "data": {
        "FacilityID": "Example External Facility Identifier",
        "Source": "Create Record test"
    },
    "meta": [
        {}
    ],
    "id": "opendes:master-data--Well:999736019023",
    "version": 1702017200855277,
    "kind": "osdu:wks:master-data--Well:1.0.0",
    "acl": {
        "viewers": [
            "data.default.viewers@opendes.contoso.com"
        ],
        "owners": [
            "data.default.owners@opendes.contoso.com",
            "data.wellbore1.owner@opendes.contoso.com"
        ]
    },
    "legal": {
        "legaltags": [
            "opendes-Test-Legal-Tag-2311232"
        ],
        "otherRelevantDataCountries": [
            "US"
        ],
        "status": "compliant"
    },
    "createUser": "preshipping@azureglobal1.onmicrosoft.com",
    "createTime": "2023-12-08T06:33:21.338Z"
}

데이터 레코드에서 ACL 삭제

첫 번째 /acl/owners/0 작업은 ACL 배열의 0번째 위치에서 ACL을 제거합니다. 이 작업을 사용하여 첫 번째 항목을 삭제하면 시스템에서 해당 항목을 삭제합니다. 그러면 이전 두 번째 항목이 첫 번째 항목이 됩니다. 두 번째 /acl/owners/0 작업은 두 번째 항목을 제거하려고 합니다.

요청 형식

curl --location --request PATCH 'https://<adme-url>/api/storage/v2/records/' \
--header 'data-partition-id: opendes' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer <token>’\
--header 'Content-Type: application/json-patch+json' \
--data '
{
    "query": {
        "ids": ["opendes:master-data--Well:999736019023"]
    },
    "ops": [
        { 
          "op": "remove", 
          "path": "/acl/owners/0"
        }
      ]
}

샘플 응답

{
      "recordCount": 1,
      "recordIds": [
          "opendes:master-data--Well:999736019023:1702017200855277"
      ],
      "notFoundRecordIds": [],
      "failedRecordIds": [],
      "errors": []
}

데이터 레코드에서 마지막 소유자 ACL을 삭제하면 오류가 발생합니다.

샘플 응답

{
    "recordCount": 0,
    "recordIds": [],
    "notFoundRecordIds": [],
    "failedRecordIds": [
        "opendes:master-data--Well: 999736019023"
    ],
    "errors": [
        "Patch operation for record: opendes:master-data--Well:999512152273 aborted. Potentially empty value of legaltags or acl/owners or acl/viewers"
    ]
}

다음 단계

데이터 레코드에 ACL을 추가한 후 다음을 수행할 수 있습니다.

Azure Data Manager for Energy 인스턴스로 데이터를 수집할 수도 있습니다.