Azure Synapse Analytics Access Control .NET 用クライアント ライブラリ - バージョン 1.0.0-preview.5

このディレクトリには、.NET SDK のオープンソースサブセットが含まれています。 完全な Azure SDK のドキュメントについては、 Microsoft Azure .NET デベロッパー センターを参照してください。

Azure Synapse Analytics アクセス制御クライアント ライブラリを使用すると、プログラムでロールの割り当てを管理できます。

Azure Synapse は、エンタープライズ データ ウェアハウスとビッグ データ分析がまとめられた無制限の分析サービスです。 サーバーレスのオンデマンド リソースまたはプロビジョニング済みのリソースを使用しながら大規模に、各自の条件で自由にデータを照会することができます。 Azure Synapse では、これら 2 つの環境を 1 つにした統合エクスペリエンスを使用して、データの取り込み、準備、管理、提供を行い、BI と機械学習の差し迫ったニーズに対応できます。

作業の開始

完全な Microsoft Azure SDK は Microsoft Azure ダウンロード ページ からダウンロードでき、デプロイ パッケージの構築、ツールとの統合、豊富なコマンド ライン ツールなどのサポートが付属しています。

最適な開発エクスペリエンスを実現するために、開発者はライブラリ用の公式の Microsoft NuGet パッケージを使用する必要があります。 NuGet パッケージは、新しい機能と修正プログラムで定期的に更新されます。

パッケージをインストールする

NuGet を使用して .NET 用の Azure Synapse Analytics アクセス制御クライアント ライブラリをインストールします。

dotnet add package Azure.Analytics.Synapse.AccessControl --version 0.1.0-preview.1

前提条件

  • Azure サブスクリプション:Azure Synapseを含む Azure サービスを使用するには、サブスクリプションが必要です。 既存の Azure アカウントをお持ちでない場合は、無料試用版にサインアップするか、アカウントの作成時Visual Studio サブスクリプション特典を使用できます。
  • 既存のAzure Synapse ワークスペース。 Azure Synapse ワークスペースを作成する必要がある場合は、Azure Portal または Azure CLI を使用できます。

Azure CLI を使用する場合、コマンドは次のようになります。

az synapse workspace create \
    --name <your-workspace-name> \
    --resource-group <your-resource-group-name> \
    --storage-account <your-storage-account-name> \
    --file-system <your-storage-file-system-name> \
    --sql-admin-login-user <your-sql-admin-user-name> \
    --sql-admin-login-password <your-sql-admin-user-password> \
    --location <your-workspace-location>

クライアントを認証する

Azure Synapse Analytics サービスと対話するには、RoleAssignmentsClient クラスまたは RoleDefinitionsClient クラスのインスタンスを作成する必要があります。

また、ポータルで "開発エンドポイント" と表示される ワークスペース エンドポイントと、クライアント オブジェクトをインスタンス化するための クライアント シークレット資格情報 (クライアント ID、クライアント シークレット、テナント ID) も必要になります。

クライアント シークレット資格情報認証は、この作業の開始セクションで使用されていますが、 Azure ID で認証するその他の方法を見つけることができます。 次に示す DefaultAzureCredential プロバイダー、または Azure SDK で提供されているその他の資格情報プロバイダーを使用するには、Azure.Identity パッケージをインストールする必要があります。

Install-Package Azure.Identity

主要な概念

RoleAssignmentsClient & RoleDefinitionsClient

RoleAssignmentsClient 使用すると、ロールの割り当てを作成、更新、削除できます。 を RoleDefinitionsClient 使用すると、ワークスペースからロールの割り当てを取得できます。

ロールの割り当て

Synapse リソースへのアクセスを制御する方法は、ロールの割り当てを作成することです。 "ロールの割り当て" は、アクセスの許可を目的として、特定のスコープで、ユーザー、グループ、サービス プリンシパル、またはマネージド ID にロールの定義をアタッチするプロセスです。 アクセスは、ロールの割り当てを作成することによって許可され、ロールの割り当てを削除することによって取り消されます。

スレッド セーフ

すべてのクライアント インスタンス メソッドがスレッド セーフであり、相互に独立していることを保証します (ガイドライン)。 これにより、スレッド間であっても、クライアント インスタンスの再利用に関する推奨事項が常に安全になります。

その他の概念

クライアント オプション | 応答 | へのアクセス実行時間の長い操作 | エラーの | 処理診断 | あざける | クライアントの有効期間

Azure.Analytics.Synapse.AccessControl パッケージでは、同期 API と非同期 API がサポートされています。 次のセクションでは、Analytics のアクセス制御に関連する最も一般的なAzure Synapseタスクについて説明します。

ロールの割り当ての例

アクセス制御クライアントを作成する

Azure Synapseと対話するには、 と RoleDefinitionsClientをインスタンス化RoleAssignmentsClientする必要があります。 エンドポイント URL と が必要です TokenCredential

// Replace the string below with your actual endpoint url.
string endpoint = "<my-endpoint-url>";

RoleAssignmentsClient roleAssignmentsClient = new RoleAssignmentsClient(new Uri(endpoint), new DefaultAzureCredential());
RoleDefinitionsClient definitionsClient = new RoleDefinitionsClient(new Uri(endpoint), new DefaultAzureCredential());

ロールの割り当てを作成する

まず、割り当てるロールの ID と、そのロールを割り当てるプリンシパルの ID を決定する必要があります。

Response<IReadOnlyList<SynapseRoleDefinition>> roles = definitionsClient.ListRoleDefinitions();
SynapseRoleDefinition role = roles.Value.Single(role => role.Name == "Synapse Administrator");
Guid roleId = role.Id.Value;

string assignedScope = "workspaces/<my-workspace-name>";

// Replace the string below with the ID you'd like to assign the role.
Guid principalId = /*<my-principal-id>"*/ Guid.NewGuid();

// Replace the string below with the ID of the assignment you'd like to use.
string assignmentId = "<my-assignment-id>";

次に、オプションを指定して を呼び出 CreateRoleAssignment して、ロールの割り当てを作成します。

Response<RoleAssignmentDetails> response = roleAssignmentsClient.CreateRoleAssignment (assignmentId, roleId, principalId, assignedScope);
RoleAssignmentDetails roleAssignmentAdded = response.Value;

ロールの割り当てを取得する

ロールの割り当ての詳細を取得するには、 を呼び出 GetRoleAssignmentByIdして、割り当て ID を渡します。

RoleAssignmentDetails roleAssignment = roleAssignmentsClient.GetRoleAssignmentById(roleAssignmentAdded.Id);
Console.WriteLine($"Role {roleAssignment.RoleDefinitionId} is assigned to {roleAssignment.PrincipalId}.");

ロールの割り当ての一覧表示

Synapse ワークスペース内のすべてのロールの割り当てを列挙するには、 を呼び出 ListRoleDefinitionsすことができます。

Response<IReadOnlyList<SynapseRoleDefinition>> roleAssignments = definitionsClient.ListRoleDefinitions();
foreach (SynapseRoleDefinition assignment in roleAssignments.Value)
{
    Console.WriteLine(assignment.Id);
}

ロールの割り当てを削除する

ロールの割り当てを削除する必要がなくなった場合は、 を呼び出 DeleteRoleAssignmentByIdして、割り当て ID を渡すことができます。

roleAssignmentsClient.DeleteRoleAssignmentById(roleAssignment.Id);

ビルドするには

Azure Synapse クライアント ライブラリの構築については、「Microsoft Azure SDK for .NETのビルド」を参照してください。

ターゲット フレームワーク

Azure Synapse クライアント ライブラリのターゲット フレームワークについては、Microsoft Azure SDK for .NETのターゲット フレームワークに関するページを参照してください。

トラブルシューティング

github で issue を開いてください。

次のステップ

次の手順では、さらに例を追加します

共同作成

このプロジェクトでは、Microsoft オープン ソースの倫理規定を採用しています。 詳しくは、「Code of Conduct FAQ (倫理規定についてよくある質問)」を参照するか、opencode@microsoft.com 宛てに質問またはコメントをお送りください。