관리 ID로 외부 테이블 인증
이 문서의 내용
필수 조건
1 - 외부 테이블에 사용할 관리 ID 구성
2 - 관리 ID 외부 리소스 권한 부여
3 - 외부 테이블 만들기
관련 콘텐츠
외부 테이블 은 Azure Data Explorer 데이터베이스 외부에 저장된 데이터를 참조하는 스키마 엔터티입니다. 외부 테이블은 Azure Storage 또는 SQL Server에서 데이터를 참조하고 다양한 인증 방법을 지원하도록 정의할 수 있습니다.
이 문서에서는 관리 ID로 인증 하는 외부 테이블을 만드는 방법을 알아봅니다 .
두 가지 종류의 관리 ID가 있습니다.
다음 탭 중 하나를 선택하여 기본 관리 ID 유형을 설정합니다.
단계에 따라 클러스터에 사용자 할당 ID 를 추가하고 나중에 사용할 수 있도록 개체(보안 주체) ID를 저장 합니다.
.alter-merge 정책 managed_identity 명령을 실행합니다. 이 명령은 외부 테이블과 함께 관리 ID를 사용할 수 있도록 클러스터에서 관리 ID 정책을 설정합니다 . 개체(보안 주체) ID로 바꿉니다<objectId>
.
.alter-merge cluster policy managed_identity ```[
{
"ObjectId": "<objectId>",
"AllowedUsages": "ExternalTable"
}
]```
참고
특정 데이터베이스에서 정책을 설정하려면 대신 사용합니다 database <DatabaseName>
cluster
.
단계에 따라 클러스터에 시스템 할당 ID 를 추가합니다.
다음 .alter-merge 정책 managed_identity 명령을 실행합니다. 이 명령은 외부 테이블과 함께 관리 ID를 사용할 수 있도록 클러스터에서 관리 ID 정책을 설정합니다 .
.alter-merge cluster policy managed_identity ```[
{
"ObjectId": "system",
"AllowedUsages": "ExternalTable"
}
]```
참고
특정 데이터베이스에서 정책을 설정하려면 대신 사용합니다 database <DatabaseName>
cluster
.
성공적으로 인증하려면 관리 ID에 외부 리소스에 대한 권한이 있어야 합니다.
관련 유형의 외부 리소스에 대한 탭을 선택하고 필요한 권한을 할당합니다.
다음 표에서는 외부 리소스에 필요한 사용 권한을 보여 줍니다. 외부 리소스에서 데이터를 가져오거나 쿼리하려면 관리 ID 읽기 권한을 부여합니다. 데이터를 외부 리소스로 내보내려면 관리 ID 쓰기 권한을 부여합니다.
테이블 확장
외부 데이터 저장소
읽기 권한
쓰기 권한
사용 권한 부여
Azure Blob Storage
Storage Blob 데이터 읽기 권한자
Storage Blob 데이터 Contributor
Azure 역할 할당
Data Lake Storage Gen2
Storage Blob 데이터 읽기 권한자
Storage Blob 데이터 Contributor
Azure 역할 할당
Data Lake Storage Gen1
판독기
기여자
Azure 역할 할당
SQL 데이터베이스에서 데이터를 가져오거나 쿼리하려면 관리 ID 테이블 SELECT 권한을 부여합니다. SQL 데이터베이스로 데이터를 내보내려면 관리 ID CREATE, UPDATE 및 INSERT 권한을 부여합니다. 자세한 내용은 사용 권한을 참조 하세요 .
Cosmos DB 데이터베이스에서 데이터를 가져오거나 쿼리하려면 관리 ID 읽기 권한을 부여합니다.
자세한 내용은 사용 권한을 참조 하세요 .
관리 ID로 인증을 지원하는 두 가지 유형의 외부 테이블, 즉 Azure Storage 외부 테이블과 SQL Server 외부 테이블 이 있습니다.
다음 탭 중 하나를 선택하여 Azure Storage 또는 SQL Server 외부 테이블을 설정합니다.
Azure Storage 외부 테이블을 만들려면 다음 단계를 수행합니다.
스토리지 연결 문자열 템플릿을 기반으로 연결 문자열 만듭니다 . 이 문자열은 액세스할 리소스와 해당 인증 정보를 나타냅니다. 관리 ID 인증 방법을 지정합니다.
.create 또는 .alter 외부 테이블을 실행하여 테이블을 만듭니다. 이전 단계의 연결 문자열 storageConnectionString 인수로 사용합니다.
다음 명령은 Azure Blob Storage의 mycontainer
mystorageaccount
CSV 형식 데이터를 참조하는 데이터를 만듭니다MyExternalTable
. 테이블에는 정수에 대한 열과 문자열s
에 대해 x
하나씩 두 개의 열이 있습니다. 연결 문자열 종료;managed_identity=system
되며, 이는 인증에 시스템 할당 관리 ID를 사용하여 데이터 저장소에 액세스하도록 나타냅니다.
.create external table MyExternalTable (x:int, s:string) kind=storage dataformat=csv
(
h@'https://mystorageaccount.blob.core.windows.net/mycontainer;managed_identity=system'
)
참고
사용자 할당 관리 ID로 인증하려면 관리 ID 개체 ID로 바꿉 system
니다.
SQL Server 외부 테이블을 만들려면 다음 단계를 수행합니다.
SQL Server 연결 문자열 만듭니다. 이 문자열은 액세스할 리소스와 해당 인증 정보를 나타냅니다. 관리 ID 인증 방법을 지정합니다.
.create 또는 .alter 외부 테이블 명령을 실행하여 테이블을 만듭니다. 연결 문자열 SqlConnectionString 인수로 사용합니다.
다음 명령은 SQL Server의 테이블을 MyDatabase
참조하는 MySqlTable
명령을 만듭니다MySqlExternalTable
. 테이블에는 정수에 대한 열과 문자열s
에 대해 x
하나씩 두 개의 열이 있습니다. 연결 문자열 개체 ID 123456789
와 함께 사용자 할당 관리 ID를 사용하여 테이블에 액세스하도록 나타내는 를 포함합니다;Authentication="Active Directory Managed Identity";User Id=123456789
.
.create external table MySqlExternalTable (x:int, s:string) kind=sql table=MySqlTable
(
h@'Server=tcp:myserver.database.windows.net,1433;Authentication="Active Directory Managed Identity";User Id=123456789;Initial Catalog=MyDatabase;'
)
참고
시스템 할당 관리 ID를 사용하여 인증하려면 제거 ;User Id={object_id}
한 후 지정만 합니다 ;Authentication="Active Directory Managed Identity"
.
Cosmos DB 외부 테이블을 만들려면 다음 단계를 수행합니다.
Cosmos DB 연결 문자열 만듭니다. 이 문자열은 액세스할 리소스와 해당 인증 정보를 나타냅니다. 관리 ID 인증 방법을 지정합니다.
.create 또는 .alter 외부 테이블 명령을 실행하여 테이블을 만듭니다. 연결 문자열 SqlConnectionString 인수로 사용합니다.
다음 명령은 Cosmos DB 계정 mycosmos
데이터베이스의 데이터를 참조하는 데이터를 MyDatabase
MyCollection
만듭니다MyCosmosDbExternalTable
.
이 연결 문자열 테이블에 액세스하기 위해 개체 ID 123456789
가 있는 사용자 할당 관리 ID를 사용했음을 나타내는 를 포함합니다;Authentication="Active Directory Managed Identity";User Id=123456789
.
.create external table MyCosmosDbExternalTable (x:int, s:string) kind=sql
(
h@'AccountEndpoint=https://mycosmos.documents.azure.com:443/;Database=MyDatabase;Collection=MyCollection;Authentication="Active Directory Managed Identity";User Id=123456789;'
)
with
(
sqlDialect = "CosmosDbSQL"
)
연결 문자열 시스템 할당 관리 ID를 사용 하 여 나타냅니다만 ;Authentication="Active Directory Managed Identity";
포함 됩니다.
.create external table MyCosmosDbExternalTable (x:int, s:string) kind=sql
(
h@'AccountEndpoint=https://mycosmos.documents.azure.com:443/;Database=MyDatabase;Collection=MyCollection;Authentication="Active Directory Managed Identity";'
)
with
(
sqlDialect = "CosmosDbSQL"
)