Freigeben über


Schnellstart: Freigeben und Empfangen von Daten mit dem Microsoft Purview Data Sharing .NET SDK

Wichtig

Dieses Feature ist derzeit in der Vorschau. Die zusätzlichen Nutzungsbedingungen für Microsoft Azure Previews enthalten zusätzliche rechtliche Bestimmungen, die für Azure-Features gelten, die sich in der Betaversion, in der Vorschau oder anderweitig noch nicht in der allgemeinen Verfügbarkeit befinden.

In dieser Schnellstartanleitung verwenden Sie das .NET SDK, um Daten freizugeben und Freigaben von Azure Data Lake Storage (ADLS Gen2) oder Blob Storage-Konten zu erhalten. Der Artikel enthält Codeausschnitte, mit denen Sie Freigaben mithilfe von Microsoft Purview Data Sharing erstellen, akzeptieren und verwalten können.

Eine Übersicht über die Funktionsweise der Datenfreigabe watch dieser kurzen Demo.

Hinweis

Dieses Feature wurde im Februar 2023 aktualisiert, und das SDK und die Berechtigungen, die zum Anzeigen und Verwalten von Datenfreigaben in Microsoft Purview erforderlich sind, wurden geändert.

  • In Microsoft Purview sind jetzt keine Berechtigungen erforderlich, um das SDK zum Erstellen und Verwalten von Freigaben zu verwenden. (Leserberechtigungen sind erforderlich, um das Microsoft Purview-Governanceportal zum Freigeben von Daten zu verwenden.)
  • Für Speicherkonten sind weiterhin Berechtigungen erforderlich.

Sehen Sie sich das aktualisierte NuGet-Paket und aktualisierte Codeausschnitte an, um das aktualisierte SDK zu verwenden.

Voraussetzungen

Voraussetzungen für Microsoft Purview

  • Ein Microsoft Purview-Konto. Sie können auch zwei Microsoft Purview-Konten verwenden, eines für den Datenanbieter und eines für den Datenconsumer, um beide Szenarien zu testen.
  • Die Azure-Anmelde-E-Mail-Adresse Ihres Empfängers, an die Sie die Einladung senden können. Der E-Mail-Alias des Empfängers funktioniert nicht.

Voraussetzungen für das Azure Storage-Konto

  • Ihr Azure-Abonnement muss für das AllowDataSharing-Vorschaufeature registriert sein. Führen Sie die folgenden Schritte mithilfe von Azure-Portal oder PowerShell aus.

    1. Wählen Sie Azure-Portal Ihr Azure-Abonnement aus, das Sie zum Erstellen des Quell- und Zielspeicherkontos verwenden möchten.
    2. Wählen Sie im linken Menü unter Einstellungendie Option Vorschaufeatures aus.
    3. Wählen Sie AllowDataSharing und Registrieren aus.
    4. Aktualisieren Sie den Bildschirm Vorschaufeatures , um zu überprüfen, ob der StatusRegistriert ist. Es kann 15 Minuten bis 1 Stunde dauern, bis die Registrierung abgeschlossen ist.
    5. Zur Verwendung der Datenfreigabe für Speicherkonten in den Regionen "USA, Osten 2", "Europa, Norden", "USA, Süden-Mitte", "USA, Westen-Mitte", "Europa, Westen", "USA, Westen2", "USA, Westen 3" wählen Sie "AllowDataSharingInHeroRegion" und "Registrieren" aus.

    Weitere Informationen finden Sie unter Registrieren der Vorschaufunktion.

    Der RegistrationState sollte Registriert sein. Es kann 15 Minuten bis 1 Stunde dauern, bis die Registrierung abgeschlossen ist. Weitere Informationen finden Sie unter Registrieren der Vorschaufunktion.

    Hinweis

    Im Folgenden werden Speicherkontokonfigurationen unterstützt:

    • Azure-Regionen: Kanada, Mitte, Kanada, Osten, Vereinigtes Königreich, Süden, Vereinigtes Königreich, Westen, Australien, Osten, Japan, Osten, Korea, Süden und Südafrika, Norden
    • Zusätzliche Azure-Regionen: USA, Osten, USA, Osten2, Europa, Norden, USA, Süden-Mitte, USA, Westen-Mitte, Europa, Westen, USA, Westen, USA, Westen 2, USA, Westen 3
    • Leistung: Standard
    • Redundanzoptionen: LRS
  • Quell- und Zielspeicherkonten, die nach Abschluss des Registrierungsschritts erstellt wurden . Beide Speicherkonten müssen sich in derselben Azure-Region befinden. Bei beiden Speicherkonten muss es sich um ADLS Gen2- oder Blob Storage-Konten handeln. Ihre Speicherkonten können sich in einer anderen Azure-Region befinden als Ihr Microsoft Purview-Konto.

  • Neueste Version des Speicher-SDK, Von PowerShell, der CLI und Azure Storage-Explorer. Die Speicher-REST-API-Version muss Februar 2020 oder höher sein.

  • Die Speicherkonten müssen in den Sammlungen registriert werden, an die Sie die Freigabe senden oder empfangen. Wenn Sie ein Microsoft Purview-Konto verwenden, kann es sich um zwei unterschiedliche Sammlungen oder dieselbe Sammlung handeln. Anweisungen zur Registrierung finden Sie auf den Datenquellenseiten für ADLS Gen2 oder Blob Storage .

  • Wenn sich die Quell- oder Zielspeicherkonten in einem anderen Azure-Abonnement als dem für das Microsoft Purview-Konto befinden, wird der Microsoft.Purview-Ressourcenanbieter automatisch in dem Azure-Abonnement registriert, in dem sich der Datenspeicher zum Zeitpunkt des Hinzufügens eines Medienobjekts oder eines Freigabeconsumers zu einem Medienobjekt befindet, und NUR , wenn der Benutzer die Berechtigung zum Ausführen des Vorgangs /register/action für den Ressourcenanbieter hat. Die Berechtigung ist in den Rollen Mitwirkender und Besitzer enthalten.

    Hinweis

    Diese Registrierung ist nur beim erstmaligen Freigeben oder Empfangen von Daten in einem Speicherkonto im Azure-Abonnement erforderlich.

Erforderliche Rollen

Hier sind die erforderlichen Rollen für die Freigabe von Daten und den Empfang von Freigaben.

Azure Storage-Kontorollen Microsoft Purview-Sammlungsrollen
Datenanbieter Eine der folgenden Rollen:
  • Besitzer
  • Besitzer von Speicherblobdaten
Datenleser
Datenconsumer Eine der folgenden Rollen:
  • Contributor
  • Besitzer
  • Mitwirkender an Storage-Blobdaten
  • Besitzer von Speicherblobdaten
Datenleser

Hinweis

Wenn Sie das Microsoft Purview-Konto erstellt haben, werden Ihnen automatisch alle Rollen der Stammsammlung zugewiesen. Weitere Informationen zur Microsoft Purview-Sammlung und zu den Rollen finden Sie unter Microsoft Purview-Berechtigungen .

Visual Studio

In der exemplarischen Vorgehensweise in diesem Artikel wird Visual Studio 2022 verwendet. Die Verfahren für Visual Studio 2013, 2015, 2017 oder 2019 können geringfügig abweichen.

Azure .NET SDK

Laden Sie das Azure .NET SDK herunter, und installieren Sie es auf Ihrem Computer.

Verwenden eines Dienstprinzipals

In den Codeausschnitten in diesem Tutorial können Sie sich entweder mit Ihren eigenen Anmeldeinformationen oder mit einem Dienstprinzipal authentifizieren. Gehen Sie wie folgt vor, um einen Dienstprinzipal einzurichten:

  1. Erstellen Sie unter Erstellen einer Azure Active Directory-Anwendung eine Anwendung, die die .NET-Anwendung darstellt, die Sie in diesem Tutorial erstellen. Für die Anmelde-URL können Sie eine Dummy-URL angeben, wie im Artikel (https://contoso.org/exampleapp).

  2. Rufen Sie unter Werte für die Anmeldung abrufen die Anwendungs-ID, die Mandanten-ID und die Objekt-ID ab, und notieren Sie sich diese Werte, die Sie später in diesem Tutorial verwenden.

  3. Rufen Sie unter Zertifikate und Geheimnisse den Authentifizierungsschlüssel ab, und notieren Sie sich diesen Wert, den Sie später in diesem Tutorial verwenden.

  4. Weisen Sie die Anwendung diesen Rollen zu:

    Benutzer Azure Storage-Kontorollen Microsoft Purview-Sammlungsrollen
    Datenanbieter Eine der folgenden Rollen:
    • Besitzer
    • Besitzer von Blob Storage-Daten
    Data Share Mitwirkender
    Datenconsumer Eine der folgenden Rollen:
    • Contributor
    • Besitzer
    • Mitwirkender an Storage-Blobdaten
    • Besitzer von Blob Storage-Daten
    Data Share Mitwirkender

Erstellen eines Visual Studio-Projekts

Erstellen Sie als Nächstes eine C#-.NET-Konsolenanwendung in Visual Studio:

  1. Starten Sie Visual Studio.
  2. Wählen Sie im Fenster Start die Option Neues Projekt>erstellen Konsolen-App aus. .NET Version 6.0 oder höher ist erforderlich.
  3. Geben Sie unter Projektnameden Namen PurviewDataSharingQuickStart ein.
  4. Wählen Sie Erstellen aus, um das Projekt zu erstellen.

Installieren der NuGet-Pakete

  1. Wählen Sie Tools>NuGet-Paket-Manager-Paket-Manager-Konsole> aus.

  2. Führen Sie in der Paketverwaltungskonsole den auf dieser Seite gezeigten Befehl paket hinzufügen aus, um das NuGet-Paket Microsoft.Azure.Analytics.Purview.Sharing hinzuzufügen.

  3. Führen Sie im Bereich Paket-Manager-Konsole die folgenden Befehle aus, um Pakete zu installieren.

    Install-Package Azure.Analytics.Purview.Sharing -IncludePrerelease
    Install-Package Azure.Identity
    

    Tipp

    Wenn Sie eine Fehlermeldung mit dem Folgenden erhalten: "Es wurde kein Projekt in gefunden..." Wenn Sie diese Befehle versuchen, müssen Sie möglicherweise nur eine Ordnerebene in Ihrem Projekt nach unten verschieben. Probieren Sie den Befehl dir aus, um Ordner in Ihrem Verzeichnis aufzulisten, und verwenden Sie dann "CD-Name <des Projektordners>", um eine Ebene nach unten in Ihren Projektordner zu wechseln. Versuchen Sie es dann erneut.

Erstellen einer gesendeten Freigabe

Dieses Skript erstellt eine Datenfreigabe, die Sie an interne oder externe Benutzer senden können. Um es zu verwenden, müssen Sie die folgenden Variablen ausfüllen:

  • SenderTenantId : Die Azure-Mandanten-ID für die Identität des Absenders.
  • SenderPurviewAccountName : Der Name des Microsoft Purview-Kontos, von dem die Daten gesendet werden.
  • ShareName : Ein Anzeigename für die gesendete Freigabe.
  • ShareDescription : (optional) Eine Beschreibung für Die gesendete Freigabe.
  • SenderStorageKind – entweder BlobAccount oder AdlsGen2Account.
  • SenderStorageResourceId : Die Ressourcen-ID für das Speicherkonto , von dem die Daten gesendet werden.
  • SenderStorageContainer : Der Name des Containers, in dem die daten gespeichert werden, die freigegeben werden sollen.
  • SenderPathToShare : Der Datei-/Ordnerpfad zu den daten, die freigegeben werden sollen.
  • UseServiceTokenCredentials – (optional) Wenn Sie einen Dienstprinzipal zum Erstellen der Freigaben verwenden möchten, legen Sie dies auf true fest.
  • SenderClientId – (optional) Wenn Sie einen Dienstprinzipal zum Erstellen der Freigaben verwenden, ist dies die Anwendungs-ID (Client) für den Dienstprinzipal.
  • SenderClientSecret – (optional) Wenn Sie einen Dienstprinzipal zum Erstellen der Freigaben verwenden, fügen Sie Ihren geheimen Clientschlüssel/Authentifizierungsschlüssel hinzu.
  • SentShareID – (optional) Diese Option muss eine GUID sein, und der aktuelle Wert generiert eine für Sie, aber Sie können sie durch einen anderen Wert ersetzen, wenn Sie möchten.
  • ReceiverVisiblePath – (optional) Der Name für die Freigabe, die dem Empfänger angezeigt wird. Derzeit auf eine GUID festgelegt, aber GUID ist nicht erforderlich.
  • SenderPurviewEndPoint : Wenn Sie die klassische Microsoft Purview-Benutzeroberfläche verwenden, verwenden $"https://{SenderPurviewAccountName}.purview.azure.com"Sie ; Wenn Sie die neue Microsoft Purview-Benutzeroberfläche verwenden, verwenden Sie https://api.purview-service.microsoft.com/
using Azure;
using Azure.Analytics.Purview.Sharing;
using Azure.Core;
using Azure.Identity;
using System.ComponentModel;

public static class PurviewDataSharingQuickStart
{
    // [REQUIRED INPUTS] Set To Actual Values.
    private static string SenderTenantId = "<Sender Identity's Tenant ID>";
    private static string SenderPurviewAccountName = "<Sender Purview Account Name>";

    private static string ShareName = "<Share Display Name>";
    private static string ShareDescription = "Share created using the SDK.";
    private static string SenderStorageKind = "<Sender Storage Account Kind (BlobAccount / AdlsGen2Account)>";
    private static string SenderStorageResourceId = "<Sender Storage Account Resource Id>";
    private static string SenderStorageContainer = "<Share Data Container Name>";
    private static string SenderPathToShare = "<File/Folder Path To Share>";

    // Set if using Service principal to create shares
    private static bool UseServiceTokenCredentials = false;
    private static string SenderClientId = "<Sender Application (Client) Id>";
    private static string SenderClientSecret = "<Sender Application (Client) Secret>";

    // [OPTIONAL INPUTS] Override Value If Desired.
    private static string SentShareId = Guid.NewGuid().ToString();
    private static string ReceiverVisiblePath = Guid.NewGuid().ToString();

    // General Configs
    private static string SenderPurviewEndPoint = $"https://{SenderPurviewAccountName}.purview.azure.com";
    private static string SenderShareEndPoint = $"{SenderPurviewEndPoint}/share";

    private static async Task Main(string[] args)
    {
        try
        {
            /// Replace all placeholder inputs above with actual values before running this program.
            /// This updated Share experience API will create Shares based on callers RBAC role on the storage account.
            /// To view/manage Shares via UX in Purview Studio. Storage accounts need to be registered (one time action) in Purview account with DSA permissions.

            Console.WriteLine($"{DateTime.Now.ToShortTimeString()}: CreateShare - START");
            await Sender_CreateSentShare();
            Console.WriteLine($"{DateTime.Now.ToShortTimeString()}: CreateShare - FINISH");
        }
        catch (Exception ex)
        {
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine(ex);
            Console.ForegroundColor = Console.ForegroundColor;
        }
    }

    private static async Task<BinaryData> Sender_CreateSentShare()
    {

        TokenCredential senderCredentials = UseServiceTokenCredentials
                ? new ClientSecretCredential(SenderTenantId, SenderClientId, SenderClientSecret)
                : new DefaultAzureCredential(new DefaultAzureCredentialOptions { AuthorityHost = new Uri("https://login.windows.net"), TenantId = SenderTenantId });

        SentSharesClient? sentSharesClient = new SentSharesClient(SenderShareEndPoint, senderCredentials);

        if (sentSharesClient == null)
        {
            throw new InvalidEnumArgumentException("Invalid Sent Shares Client.");
        }

        // Create sent share
        var inPlaceSentShareDto = new
        {
            shareKind = "InPlace",
            properties = new
            {
                displayName = ShareName,
                description = ShareDescription,
                artifact = new
                {
                    storeKind = SenderStorageKind,
                    storeReference = new
                    {
                        referenceName = SenderStorageResourceId,
                        type = "ArmResourceReference"
                    },
                    properties = new
                    {
                        paths = new[]
                        {
                            new
                            {
                                receiverPath = ReceiverVisiblePath,
                                containerName = SenderStorageContainer,
                                senderPath = SenderPathToShare
                            }
                        }
                    }
                }
            },
        };

        Operation<BinaryData> sentShare = await sentSharesClient.CreateOrReplaceSentShareAsync(WaitUntil.Completed, SentShareId, RequestContent.Create(inPlaceSentShareDto));
        Console.ForegroundColor = ConsoleColor.Green;
        Console.WriteLine(sentShare.Value);
        Console.ForegroundColor = Console.ForegroundColor;
        return sentShare.Value;
    }
}

Senden einer Einladung an einen Benutzer

Dieses Skript sendet eine E-Mail-Einladung für eine Freigabe an einen Benutzer. Wenn Sie eine Einladung an einen Dienstprinzipal senden möchten, lesen Sie das nächste Codebeispiel. Um es zu verwenden, müssen Sie die folgenden Variablen ausfüllen:

  • RecipientUserEmailId: Email Adresse, an die der Benutzer die Einladung senden soll.
  • SenderTenantId : Die Azure-Mandanten-ID für die Identität des Freigabesenders.
  • SenderPurviewAccountName : Der Name des Microsoft Purview-Kontos, von dem die Daten gesendet werden.
  • SenderStorageResourceId : Die Ressourcen-ID für das Speicherkonto , von dem die Daten gesendet werden.
  • SentShareDisplayName : Der Name der gesendeten Freigabe, für die Sie eine Einladung senden.
  • UseServiceTokenCredentials – (optional) Wenn Sie einen Dienstprinzipal zum Erstellen der Freigaben verwenden möchten, legen Sie dies auf true fest.
  • SenderClientId – (optional) Wenn Sie einen Dienstprinzipal zum Erstellen der Freigaben verwenden, ist dies die Anwendungs-ID (Client) für den Dienstprinzipal.
  • SenderClientSecret – (optional) Wenn Sie einen Dienstprinzipal zum Erstellen der Freigaben verwenden, fügen Sie Ihren geheimen Clientschlüssel/Authentifizierungsschlüssel hinzu.
  • InvitationId – (optional) Diese Option muss eine GUID sein, und der aktuelle Wert generiert eine für Sie, aber Sie können sie bei Bedarf durch einen anderen Wert ersetzen.
  • SenderPurviewEndPoint : Wenn Sie die klassische Microsoft Purview-Benutzeroberfläche verwenden, verwenden $"https://{SenderPurviewAccountName}.purview.azure.com"Sie ; Wenn Sie die neue Microsoft Purview-Benutzeroberfläche verwenden, verwenden Sie https://api.purview-service.microsoft.com/
using Azure;
using Azure.Analytics.Purview.Sharing;
using Azure.Core;
using Azure.Identity;
using System.ComponentModel;
using System.Text.Json;

public static class PurviewDataSharingQuickStart
{
    // [REQUIRED INPUTS] Set To Actual Values.
    private static string RecipientUserEmailId = "<Target User's Email Id>";

    private static string SenderTenantId = "<Sender Indentity's Tenant ID>";
    private static string SenderPurviewAccountName = "<Sender Purview Account Name>";
    private static string SenderStorageResourceId = "<Sender Storage Account Resource Id>";

    // Set if using Service principal to send invitation
    private static bool UseServiceTokenCredentials = false;
    private static string SenderClientId = "<Sender Application (Client) Id>";
    private static string SenderClientSecret = "<Sender Application (Client) Secret>";

    private static string SentShareDisplayName = "<Name of share you're sending an invite for.>";
    private static string InvitationId = Guid.NewGuid().ToString();

    // General Configs
    private static string SenderPurviewEndPoint = $"https://{SenderPurviewAccountName}.purview.azure.com";
    private static string SenderShareEndPoint = $"{SenderPurviewEndPoint}/share";
    private static int StepCounter = 0;

    private static async Task Main(string[] args)
    {
        try
        {

            Console.WriteLine($"{DateTime.Now.ToShortTimeString()}: SendtoUser - START");
            await Sender_CreateUserRecipient();
            Console.WriteLine($"{DateTime.Now.ToShortTimeString()}: SendtoUser - FINISH");
        }
        catch (Exception ex)
        {
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine(ex);
            Console.ForegroundColor = Console.ForegroundColor;
        }
    }

    public static async Task<List<T>> ToResultList<T>(this AsyncPageable<T> asyncPageable)
    {
        List<T> list = new List<T>();

        await foreach (T item in asyncPageable)
        {
            list.Add(item);
        }

        return list;
    }

    private static async Task<BinaryData> Sender_CreateUserRecipient()
    {

        TokenCredential senderCredentials = UseServiceTokenCredentials
                ? new ClientSecretCredential(SenderTenantId, SenderClientId, SenderClientSecret)
                : new DefaultAzureCredential(new DefaultAzureCredentialOptions { AuthorityHost = new Uri("https://login.windows.net"), TenantId = SenderTenantId });

        SentSharesClient? sentSharesClient = new SentSharesClient(SenderShareEndPoint, senderCredentials);

        if (string.IsNullOrEmpty(RecipientUserEmailId))
        {
            throw new InvalidEnumArgumentException("Invalid Recipient User Email Id.");
        }

        // Create user recipient and invite
        var invitationData = new
        {
            invitationKind = "User",
            properties = new
            {
                expirationDate = DateTime.Now.AddDays(7).ToString(),
                notify = true, // Send invitation email
                targetEmail = RecipientUserEmailId
            }
        };

        var allSentShares = await sentSharesClient.GetAllSentSharesAsync(SenderStorageResourceId).ToResultList();

        Console.ForegroundColor = ConsoleColor.Yellow;
        Console.WriteLine("{0}. {1}...", ++StepCounter, "Get a Specific Sent Share");
        Console.ForegroundColor = Console.ForegroundColor;

        var mySentShare = allSentShares.First(sentShareDoc =>
        {
            var doc = JsonDocument.Parse(sentShareDoc).RootElement;
            var props = doc.GetProperty("properties");
            return props.GetProperty("displayName").ToString() == SentShareDisplayName;
        });

        Console.ForegroundColor = ConsoleColor.Green;
        Console.WriteLine("My Sent Share Id: " + JsonDocument.Parse(mySentShare).RootElement.GetProperty("id").ToString());
        Console.ForegroundColor = Console.ForegroundColor;

        var SentShareId = JsonDocument.Parse(mySentShare).RootElement.GetProperty("id").ToString();

        var sentInvitation = await sentSharesClient.CreateSentShareInvitationAsync(SentShareId, InvitationId, RequestContent.Create(invitationData));

        Console.ForegroundColor = ConsoleColor.Green;
        Console.WriteLine(sentInvitation.Content);
        Console.ForegroundColor = Console.ForegroundColor;

        return sentInvitation.Content;
    }
}

Senden einer Einladung an einen Dienst

Dieses Skript sendet eine E-Mail-Einladung für eine Freigabe an einen Dienstprinzipal. Wenn Sie eine Einladung an einen Benutzer senden möchten, sehen Sie sich das vorherige Beispiel an. Um es zu verwenden, müssen Sie die folgenden Variablen ausfüllen:

  • RecipientApplicationTenantId : Die Azure-Mandanten-ID für den empfangenden Dienstprinzipal.
  • RecipientApplicationObjectId : Die Objekt-ID für den empfangenden Dienstprinzipal.
  • SenderTenantId : Die Azure-Mandanten-ID für die Identität des Freigabesenders.
  • SenderPurviewAccountName : Der Name des Microsoft Purview-Kontos, von dem die Daten gesendet werden.
  • SenderStorageResourceId : Die Ressourcen-ID für das Speicherkonto , von dem die Daten gesendet werden.
  • SentShareDisplayName : Der Name der gesendeten Freigabe, für die Sie eine Einladung senden.
  • UseServiceTokenCredentials – (optional) Wenn Sie einen Dienstprinzipal zum Erstellen der Freigaben verwenden möchten, legen Sie dies auf true fest.
  • SenderClientId – (optional) Wenn Sie einen Dienstprinzipal zum Erstellen der Freigaben verwenden, ist dies die Anwendungs-ID (Client) für den Dienstprinzipal.
  • SenderClientSecret – (optional) Wenn Sie einen Dienstprinzipal zum Erstellen der Freigaben verwenden, fügen Sie Ihren geheimen Clientschlüssel/Authentifizierungsschlüssel hinzu.
  • InvitationId – (optional) Diese Option muss eine GUID sein, und der aktuelle Wert generiert eine für Sie, aber Sie können sie bei Bedarf durch einen anderen Wert ersetzen.
  • SenderPurviewEndPoint : Wenn Sie die klassische Microsoft Purview-Benutzeroberfläche verwenden, verwenden $"https://{SenderPurviewAccountName}.purview.azure.com"Sie ; Wenn Sie die neue Microsoft Purview-Benutzeroberfläche verwenden, verwenden Sie https://api.purview-service.microsoft.com/
using Azure;
using Azure.Analytics.Purview.Sharing;
using Azure.Core;
using Azure.Identity;
using System.ComponentModel;
using System.Text.Json;

public static class PurviewDataSharingQuickStart
{
    // [REQUIRED INPUTS] Set To Actual Values.
    private static string RecipientApplicationTenantId = "<Target Application's Tenant Id>";
    private static string RecipientApplicationObjectId = "<Target Application's Object Id>";

    private static string SentShareDisplayName = "<Name of share you're sending an invite for.>";
    private static string InvitationId = Guid.NewGuid().ToString();

    private static string SenderTenantId = "<Sender Indentity's Tenant ID>";
    private static string SenderPurviewAccountName = "<Sender Purview Account Name>";

    private static string SenderStorageResourceId = "<Resource ID for storage account that has been shared>";

    // Set if using Service principal to send invitation
    private static bool UseServiceTokenCredentials = false;
    private static string SenderClientId = "<Sender Application (Client) Id>";
    private static string SenderClientSecret = "<Sender Application (Client) Secret>";

    // General Configs
    private static string SenderPurviewEndPoint = $"https://{SenderPurviewAccountName}.purview.azure.com";
    private static string SenderShareEndPoint = $"{SenderPurviewEndPoint}/share";

    private static async Task Main(string[] args)
    {
        try
        {

            Console.WriteLine($"{DateTime.Now.ToShortTimeString()}: SendtoService - START");
            await Sender_CreateServiceRecipient();
            Console.WriteLine($"{DateTime.Now.ToShortTimeString()}: SendtoService - FINISH");
        }
        catch (Exception ex)
        {
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine(ex);
            Console.ForegroundColor = Console.ForegroundColor;
        }
    }

    public static async Task<List<T>> ToResultList<T>(this AsyncPageable<T> asyncPageable)
    {
        List<T> list = new List<T>();

        await foreach (T item in asyncPageable)
        {
            list.Add(item);
        }

        return list;
    }

    private static async Task<BinaryData> Sender_CreateServiceRecipient()
    {

        TokenCredential senderCredentials = UseServiceTokenCredentials
                ? new ClientSecretCredential(SenderTenantId, SenderClientId, SenderClientSecret)
                : new DefaultAzureCredential(new DefaultAzureCredentialOptions { AuthorityHost = new Uri("https://login.windows.net"), TenantId = SenderTenantId });

        SentSharesClient? sentSharesClient = new SentSharesClient(SenderShareEndPoint, senderCredentials);

        if (!Guid.TryParse(RecipientApplicationTenantId, out Guid _))
        {
            throw new InvalidEnumArgumentException("Invalid Recipient Service Tenant Id.");
        }

        if (!Guid.TryParse(RecipientApplicationObjectId, out Guid _))
        {
            throw new InvalidEnumArgumentException("Invalid Recipient Service Object Id.");
        }

        // Create service recipient
        var invitationData = new
        {
            invitationKind = "Service",
            properties = new
            {
                expirationDate = DateTime.Now.AddDays(5).ToString(),
                targetActiveDirectoryId = RecipientApplicationTenantId,
                targetObjectId = RecipientApplicationObjectId
            }
        };


        var allSentShares = await sentSharesClient.GetAllSentSharesAsync(SenderStorageResourceId).ToResultList();
        var mySentShare = allSentShares.First(sentShareDoc =>
        {
            var doc = JsonDocument.Parse(sentShareDoc).RootElement;
            var props = doc.GetProperty("properties");
            return props.GetProperty("displayName").ToString() == SentShareDisplayName;
        });

        var SentShareId = JsonDocument.Parse(mySentShare).RootElement.GetProperty("id").ToString();

        var sentInvitation = await sentSharesClient.CreateSentShareInvitationAsync(SentShareId, InvitationId, RequestContent.Create(invitationData));
        Console.ForegroundColor = ConsoleColor.Green;
        Console.WriteLine(sentInvitation.Content);
        Console.ForegroundColor = Console.ForegroundColor;
        return sentInvitation.Content;
    }

}

Auflisten gesendeter Freigaben

Dieses Skript listet alle gesendeten Freigaben für eine bestimmte Speicherressource auf. Um es zu verwenden, müssen Sie die folgenden Variablen ausfüllen:

  • SenderTenantId : Die Azure-Mandanten-ID für die Identität des Freigabesenders.
  • SenderPurviewAccountName : Der Name des Microsoft Purview-Kontos, von dem die Daten gesendet wurden.
  • SenderStorageResourceId : Die Ressourcen-ID für das Speicherkonto , von dem Freigaben gesendet wurden.
  • UseServiceTokenCredentials – (optional) Wenn Sie einen Dienstprinzipal zum Erstellen der Freigaben verwenden möchten, legen Sie dies auf true fest.
  • SenderClientId – (optional) Wenn Sie einen Dienstprinzipal zum Erstellen der Freigaben verwenden, ist dies die Anwendungs-ID (Client) für den Dienstprinzipal.
  • SenderClientSecret – (optional) Wenn Sie einen Dienstprinzipal zum Erstellen der Freigaben verwenden, fügen Sie Ihren geheimen Clientschlüssel/Authentifizierungsschlüssel hinzu.
  • SenderPurviewEndPoint : Wenn Sie die klassische Microsoft Purview-Benutzeroberfläche verwenden, verwenden $"https://{SenderPurviewAccountName}.purview.azure.com"Sie ; Wenn Sie die neue Microsoft Purview-Benutzeroberfläche verwenden, verwenden Sie https://api.purview-service.microsoft.com/
using Azure;
using Azure.Analytics.Purview.Sharing;
using Azure.Core;
using Azure.Identity;

public static class PurviewDataSharingQuickStart
{
    // [REQUIRED INPUTS] Set To Actual Values.
    private static string SenderTenantId = "<Sender Tenant ID>";
    private static string SenderPurviewAccountName = "<Name of the Microsoft Purview account>";
    private static string SenderStorageResourceId = "<Sender Storage Account Resource Id>";

    // Set if using Service principal to list shares
    private static bool UseServiceTokenCredentials = false;
    private static string SenderClientId = "<Sender Application (Client) Id>";
    private static string SenderClientSecret = "<Sender Application (Client) Secret>";

    // General Configs
    private static string SenderPurviewEndPoint = $"https://{SenderPurviewAccountName}.purview.azure.com";
    private static string SenderShareEndPoint = $"{SenderPurviewEndPoint}/share";

    private static async Task Main(string[] args)
    {


        try
        {
            TokenCredential senderCredentials = UseServiceTokenCredentials
                ? new ClientSecretCredential(SenderTenantId, SenderClientId, SenderClientSecret)
                : new DefaultAzureCredential(new DefaultAzureCredentialOptions { AuthorityHost = new Uri("https://login.windows.net"), TenantId = SenderTenantId });

            SentSharesClient? sentSharesClient = new SentSharesClient(SenderShareEndPoint, senderCredentials);

            var allSentShares = await sentSharesClient.GetAllSentSharesAsync(SenderStorageResourceId).ToResultList();
            Console.WriteLine(allSentShares);
        }
        catch (Exception ex)
        {
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine(ex);
            Console.ForegroundColor = Console.ForegroundColor;
        }
    }

    public static async Task<List<T>> ToResultList<T>(this AsyncPageable<T> asyncPageable)
    {
        List<T> list = new List<T>();

        await foreach (T item in asyncPageable)
        {
            list.Add(item);
        }

        return list;
    }
}

Auflisten aller Freigabeempfänger

Dieses Skript listet alle Empfänger für eine bestimmte Freigabe auf. Um es zu verwenden, müssen Sie die folgenden Variablen ausfüllen:

  • SenderTenantId : Die Azure-Mandanten-ID für die Identität des Freigabesenders.
  • SenderPurviewAccountName : Der Name des Microsoft Purview-Kontos, von dem die Daten gesendet wurden.
  • SentShareDisplayName : Der Name der gesendeten Freigabe, für die Sie Empfänger auflisten.
  • SenderStorageResourceId : Die Ressourcen-ID für das Speicherkonto , von dem die Daten gesendet werden.
  • UseServiceTokenCredentials – (optional) Wenn Sie einen Dienstprinzipal zum Erstellen der Freigaben verwenden möchten, legen Sie dies auf true fest.
  • SenderClientId – (optional) Wenn Sie einen Dienstprinzipal zum Erstellen der Freigaben verwenden, ist dies die Anwendungs-ID (Client) für den Dienstprinzipal.
  • SenderClientSecret – (optional) Wenn Sie einen Dienstprinzipal zum Erstellen der Freigaben verwenden, fügen Sie Ihren geheimen Clientschlüssel/Authentifizierungsschlüssel hinzu.
  • SenderPurviewEndPoint : Wenn Sie die klassische Microsoft Purview-Benutzeroberfläche verwenden, verwenden $"https://{SenderPurviewAccountName}.purview.azure.com"Sie ; Wenn Sie die neue Microsoft Purview-Benutzeroberfläche verwenden, verwenden Sie https://api.purview-service.microsoft.com/
using Azure;
using Azure.Analytics.Purview.Sharing;
using Azure.Core;
using Azure.Identity;
using System.Text.Json;

public static class PurviewDataSharingQuickStart
{
    // [REQUIRED INPUTS] Set To Actual Values.
    private static string SentShareDisplayName = "<Name of share you're listing recipients for.>";
    private static string SenderTenantId = "<Sender Tenant ID>";
    private static string SenderPurviewAccountName = "<Name of the Microsoft Purview account>";

    private static string SenderStorageResourceId = "<Sender Storage Account Resource Id>";

    // Set if using Service principal to list recipients
    private static bool UseServiceTokenCredentials = false;
    private static string SenderClientId = "<Sender Application (Client) Id>";
    private static string SenderClientSecret = "<Sender Application (Client) Secret>";

    // General Configs
    private static string SenderPurviewEndPoint = $"https://{SenderPurviewAccountName}.purview.azure.com";
    private static string SenderShareEndPoint = $"{SenderPurviewEndPoint}/share";

    private static async Task Main(string[] args)
    {
        try
        {
            TokenCredential senderCredentials = UseServiceTokenCredentials
                ? new ClientSecretCredential(SenderTenantId, SenderClientId, SenderClientSecret)
                : new DefaultAzureCredential(new DefaultAzureCredentialOptions { AuthorityHost = new Uri("https://login.windows.net"), TenantId = SenderTenantId });

            SentSharesClient? sentSharesClient = new SentSharesClient(SenderShareEndPoint, senderCredentials);

            var allSentShares = await sentSharesClient.GetAllSentSharesAsync(SenderStorageResourceId).ToResultList();
            var mySentShare = allSentShares.First(sentShareDoc =>
            {
                var doc = JsonDocument.Parse(sentShareDoc).RootElement;
                var props = doc.GetProperty("properties");
                return props.GetProperty("displayName").ToString() == SentShareDisplayName;
            });

            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine("My Sent Share Id: " + JsonDocument.Parse(mySentShare).RootElement.GetProperty("id").ToString());
            Console.ForegroundColor = Console.ForegroundColor;

            var SentShareId = JsonDocument.Parse(mySentShare).RootElement.GetProperty("id").ToString();

            var allRecipients = await sentSharesClient.GetAllSentShareInvitationsAsync(SentShareId).ToResultList();
            Console.WriteLine(allRecipients);

        }
        catch (Exception ex)
        {
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine(ex);
            Console.ForegroundColor = Console.ForegroundColor;
        }
    }

    public static async Task<List<T>> ToResultList<T>(this AsyncPageable<T> asyncPageable)
    {
        List<T> list = new List<T>();

        await foreach (T item in asyncPageable)
        {
            list.Add(item);
        }

        return list;
    }
}

Empfänger löschen

Dieses Skript entfernt eine Freigabe-Einladung und damit die Freigabe für einen Empfänger. Um es zu verwenden, müssen Sie die folgenden Variablen ausfüllen:

  • SenderTenantId : Die Azure-Mandanten-ID für die Identität des Freigabesenders.
  • SenderPurviewAccountName : Der Name des Microsoft Purview-Kontos, von dem die Daten gesendet wurden.
  • SentShareDisplayName : Der Name der gesendeten Freigabe, für die Sie einen Empfänger entfernen.
  • SenderStorageResourceId : Die Ressourcen-ID für das Speicherkonto , von dem die Daten gesendet werden.
  • RecipientUserEmailId: Email Adresse für den Benutzer, den Sie löschen möchten.
  • UseServiceTokenCredentials – (optional) Wenn Sie einen Dienstprinzipal zum Erstellen der Freigaben verwenden möchten, legen Sie dies auf true fest.
  • SenderClientId – (optional) Wenn Sie einen Dienstprinzipal zum Erstellen der Freigaben verwenden, ist dies die Anwendungs-ID (Client) für den Dienstprinzipal.
  • SenderClientSecret – (optional) Wenn Sie einen Dienstprinzipal zum Erstellen der Freigaben verwenden, fügen Sie Ihren geheimen Clientschlüssel/Authentifizierungsschlüssel hinzu.
  • SenderPurviewEndPoint : Wenn Sie die klassische Microsoft Purview-Benutzeroberfläche verwenden, verwenden $"https://{SenderPurviewAccountName}.purview.azure.com"Sie ; Wenn Sie die neue Microsoft Purview-Benutzeroberfläche verwenden, verwenden Sie https://api.purview-service.microsoft.com/
using Azure;
using Azure.Analytics.Purview.Sharing;
using Azure.Core;
using Azure.Identity;
using System.Text.Json;

public static class PurviewDataSharingQuickStart
{
    // [REQUIRED INPUTS] Set To Actual Values.
    private static string SentShareDisplayName = "<Name of share you're removing a recipient for.>";
    private static string SenderTenantId = "<Sender Tenant ID>";
    private static string SenderPurviewAccountName = "<Name of the Microsoft Purview account>";
    private static string RecipientUserEmailId = "<Target User's Email Id>";

    private static string SenderStorageResourceId = "<Sender Storage Account Resource Id>";

    // Set if using Service principal to delete recipients
    private static bool UseServiceTokenCredentials = false;
    private static string SenderClientId = "<Sender Application (Client) Id>";
    private static string SenderClientSecret = "<Sender Application (Client) Secret>";

    // General Configs
    private static string SenderPurviewEndPoint = $"https://{SenderPurviewAccountName}.purview.azure.com";
    private static string SenderShareEndPoint = $"{SenderPurviewEndPoint}/share";

    private static async Task Main(string[] args)
    {
        try
        {
            TokenCredential senderCredentials = UseServiceTokenCredentials
                ? new ClientSecretCredential(SenderTenantId, SenderClientId, SenderClientSecret)
                : new DefaultAzureCredential(new DefaultAzureCredentialOptions { AuthorityHost = new Uri("https://login.windows.net"), TenantId = SenderTenantId });

            SentSharesClient? sentSharesClient = new SentSharesClient(SenderShareEndPoint, senderCredentials);

            var allSentShares = await sentSharesClient.GetAllSentSharesAsync(SenderStorageResourceId).ToResultList();

            var mySentShare = allSentShares.First(sentShareDoc =>
            {
                var doc = JsonDocument.Parse(sentShareDoc).RootElement;
                var props = doc.GetProperty("properties");
                return props.GetProperty("displayName").ToString() == SentShareDisplayName;
            });

            var SentShareId = JsonDocument.Parse(mySentShare).RootElement.GetProperty("id").ToString();

            var allRecipients = await sentSharesClient.GetAllSentShareInvitationsAsync(SentShareId).ToResultList();

            var recipient = allRecipients.First(recipient =>
            {
                var doc = JsonDocument.Parse(recipient).RootElement;
                var props = doc.GetProperty("properties");
                return props.TryGetProperty("targetEmail", out JsonElement rcpt) && rcpt.ToString() == RecipientUserEmailId;
            });

            var recipientId = JsonDocument.Parse(recipient).RootElement.GetProperty("id").ToString();

            await sentSharesClient.DeleteSentShareInvitationAsync(WaitUntil.Completed, SentShareId, recipientId);

            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine("Remove Id: " + JsonDocument.Parse(recipient).RootElement.GetProperty("id").ToString());
            Console.WriteLine("Complete");
            Console.ForegroundColor = Console.ForegroundColor;

        }

        catch (Exception ex)
        {
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine(ex);
            Console.ForegroundColor = Console.ForegroundColor;
        }
    }

    public static async Task<List<T>> ToResultList<T>(this AsyncPageable<T> asyncPageable)
    {
        List<T> list = new List<T>();

        await foreach (T item in asyncPageable)
        {
            list.Add(item);
        }

        return list;
    }
}

Gesendete Freigabe löschen

Dieses Skript löscht eine gesendete Freigabe. Um es zu verwenden, müssen Sie die folgenden Variablen ausfüllen:

  • SenderTenantId : Die Azure-Mandanten-ID für die Identität des Freigabesenders.
  • SenderPurviewAccountName : Der Name des Microsoft Purview-Kontos, von dem die Daten gesendet wurden.
  • SentShareDisplayName : Der Name der gesendeten Freigabe, für die Sie Empfänger auflisten.
  • SenderStorageResourceId : Die Ressourcen-ID für das Speicherkonto , von dem die Daten gesendet werden.
  • UseServiceTokenCredentials – (optional) Wenn Sie einen Dienstprinzipal zum Erstellen der Freigaben verwenden möchten, legen Sie dies auf true fest.
  • SenderClientId – (optional) Wenn Sie einen Dienstprinzipal zum Erstellen der Freigaben verwenden, ist dies die Anwendungs-ID (Client) für den Dienstprinzipal.
  • SenderClientSecret – (optional) Wenn Sie einen Dienstprinzipal zum Erstellen der Freigaben verwenden, fügen Sie Ihren geheimen Clientschlüssel/Authentifizierungsschlüssel hinzu.
  • SenderPurviewEndPoint : Wenn Sie die klassische Microsoft Purview-Benutzeroberfläche verwenden, verwenden $"https://{SenderPurviewAccountName}.purview.azure.com"Sie ; Wenn Sie die neue Microsoft Purview-Benutzeroberfläche verwenden, verwenden Sie https://api.purview-service.microsoft.com/
using Azure;
using Azure.Analytics.Purview.Sharing;
using Azure.Core;
using Azure.Identity;
using System.Text.Json;

public static class PurviewDataSharingQuickStart
{
    // [REQUIRED INPUTS] Set To Actual Values.
    private static string SenderTenantId = "<Sender Tenant ID>";
    private static string SenderPurviewAccountName = "<Name of the Microsoft Purview account>";
    private static string SentShareDisplayName = "<Name of share you're removing.>";

    private static string SenderStorageResourceId = "<Sender Storage Account Resource Id>";

    // Set if using Service principal to delete share
    private static bool UseServiceTokenCredentials = false;
    private static string SenderClientId = "<Sender Application (Client) Id>";
    private static string SenderClientSecret = "<Sender Application (Client) Secret>";

    // General Configs
    private static string SenderPurviewEndPoint = $"https://{SenderPurviewAccountName}.purview.azure.com";
    private static string SenderShareEndPoint = $"{SenderPurviewEndPoint}/share";

    private static async Task Main(string[] args)
    {
        try
        {
            TokenCredential senderCredentials = UseServiceTokenCredentials
                ? new ClientSecretCredential(SenderTenantId, SenderClientId, SenderClientSecret)
                : new DefaultAzureCredential(new DefaultAzureCredentialOptions { AuthorityHost = new Uri("https://login.windows.net"), TenantId = SenderTenantId });

            SentSharesClient? sentSharesClient = new SentSharesClient(SenderShareEndPoint, senderCredentials);

            var allSentShares = await sentSharesClient.GetAllSentSharesAsync(SenderStorageResourceId).ToResultList();

            var mySentShare = allSentShares.First(sentShareDoc =>
            {
                var doc = JsonDocument.Parse(sentShareDoc).RootElement;
                var props = doc.GetProperty("properties");
                return props.GetProperty("displayName").ToString() == SentShareDisplayName;
            });

            var SentShareId = JsonDocument.Parse(mySentShare).RootElement.GetProperty("id").ToString();

            await sentSharesClient.DeleteSentShareAsync(WaitUntil.Completed, SentShareId);

            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine("Remove Id: " + SentShareId);
            Console.WriteLine("Complete");
            Console.ForegroundColor = Console.ForegroundColor;

        }
        catch (Exception ex)
        {
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine(ex);
            Console.ForegroundColor = Console.ForegroundColor;
        }
    }

    public static async Task<List<T>> ToResultList<T>(this AsyncPageable<T> asyncPageable)
    {
        List<T> list = new List<T>();

        await foreach (T item in asyncPageable)
        {
            list.Add(item);
        }

        return list;
    }
}

Erstellen einer empfangenen Freigabe

Mit diesem Skript können Sie eine Datenfreigabe erhalten. Um es zu verwenden, müssen Sie die folgenden Variablen ausfüllen:

  • ReceiverTenantId : Die Azure-Mandanten-ID für den Benutzer/Dienst, der die freigegebenen Daten empfängt.
  • ReceiverPurviewAccountName : Der Name des Microsoft Purview-Kontos, in dem die Daten empfangen werden.
  • ReceiverStorageKind – entweder BlobAccount oder AdlsGen2Account.
  • ReceiverStorageResourceId : Die Ressourcen-ID für das Speicherkonto , in dem die Daten empfangen werden.
  • ReceiverStorageContainer : Der Name des Containers, in dem die freigegebenen Daten gespeichert werden.
  • ReceiverTargetFolderName : Der Ordnerpfad, in dem die freigegebenen Daten gespeichert werden.
  • ReceiverTargetMountPath : Der Bereitstellungspfad, den Sie zum Speichern Ihrer Daten im Ordner verwenden möchten.
  • UseServiceTokenCredentials – (optional) Wenn Sie einen Dienstprinzipal zum Empfangen der Freigaben verwenden möchten, legen Sie dies auf true fest.
  • ReceiverClientId – (optional) Wenn Sie einen Dienstprinzipal zum Empfangen der Freigaben verwenden, ist dies die Anwendungs-ID (Client-ID) für den Dienstprinzipal.
  • ReceiverClientSecret – (optional) Wenn Sie einen Dienstprinzipal zum Empfangen der Freigaben verwenden, fügen Sie Ihren geheimen Clientschlüssel/Authentifizierungsschlüssel hinzu.
  • ReceivedShareId – (optional) Diese Option muss eine GUID sein, und der aktuelle Wert generiert eine für Sie, aber Sie können ihn bei Bedarf durch einen anderen Wert ersetzen.
  • ReceiverVisiblePath : (optional) Name, den Sie für den Pfad für Ihre empfangene Freigabe verwenden möchten.
  • ReceivedShareDisplayName – (optional) Ein Anzeigename für Ihre empfangene Freigabe.
  • ReceiverPurviewEndPoint : Wenn Sie die klassische Microsoft Purview-Benutzeroberfläche verwenden, verwenden $"https://{ReceiverPurviewAccountName}.purview.azure.com"Sie ; Wenn Sie die neue Microsoft Purview-Benutzeroberfläche verwenden, verwenden Sie https://api.purview-service.microsoft.com/
using Azure;
using Azure.Analytics.Purview.Sharing;
using Azure.Core;
using Azure.Identity;
using System.ComponentModel;
using System.Text.Json;

public static class PurviewDataSharingQuickStart
{
    // [REQUIRED INPUTS] Set To Actual Values.
    private static string ReceiverTenantId = "<Receiver Indentity's Tenant ID>";
    private static string ReceiverPurviewAccountName = "<Receiver Purview Account Name>";

    private static string ReceiverStorageKind = "<Receiver Storage Account Kind (BlobAccount / AdlsGen2Account)>";
    private static string ReceiverStorageResourceId = "<Receiver Storage Account Resource Id>";
    private static string ReceiverStorageContainer = "<Container Name To Receive Data Under>";
    private static string ReceiverTargetFolderName = "<Folder Name to Received Data Under>";
    private static string ReceiverTargetMountPath = "<Mount Path to store Received Data Under>";

    //Use if using a service principal to receive a share
    private static bool UseServiceTokenCredentials = false;
    private static string ReceiverClientId = "<Receiver Caller Application (Client) Id>";
    private static string ReceiverClientSecret = "<Receiver Caller Application (Client) Secret>";

    // [OPTIONAL INPUTS] Override Values If Desired.
    private static string ReceivedShareId = Guid.NewGuid().ToString();
    private static string ReceiverVisiblePath = "ReceivedSharePath";

    private static string ReceivedShareDisplayName = "ReceivedShare";

    // General Configs
    private static string ReceiverPurviewEndPoint = $"https://{ReceiverPurviewAccountName}.purview.azure.com";
    private static string ReceiverShareEndPoint = $"{ReceiverPurviewEndPoint}/share";

    private static async Task Main(string[] args)
    {
        try
        {


            Console.WriteLine($"{DateTime.Now.ToShortTimeString()}: CreateReceivedShare - START");
            await Receiver_CreateReceivedShare();
            Console.WriteLine($"{DateTime.Now.ToShortTimeString()}: CreateReceivedShare - FINISH");
        }
        catch (Exception ex)
        {
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine(ex);
            Console.ForegroundColor = Console.ForegroundColor;
        }
    }

    private static async Task<BinaryData> Receiver_CreateReceivedShare()
    {

        TokenCredential receiverCredentials = UseServiceTokenCredentials
            ? new ClientSecretCredential(ReceiverTenantId, ReceiverClientId, ReceiverClientSecret)
            : new DefaultAzureCredential(new DefaultAzureCredentialOptions { AuthorityHost = new Uri("https://login.windows.net"), TenantId = ReceiverTenantId });

        ReceivedSharesClient? receivedSharesClient = new ReceivedSharesClient(ReceiverShareEndPoint, receiverCredentials);

        if (receivedSharesClient == null)
        {
            throw new InvalidEnumArgumentException("Invalid Received Shares Client.");
        }

        var results = await receivedSharesClient.GetAllDetachedReceivedSharesAsync().ToResultList();
        var detachedReceivedShare = results;

        if (detachedReceivedShare == null)
        {
            throw new InvalidOperationException("No received shares found.");
        }



        var myReceivedShare = detachedReceivedShare.First(recShareDoc =>
        {
            var doc = JsonDocument.Parse(recShareDoc).RootElement;
            var props = doc.GetProperty("properties");
            return props.GetProperty("displayName").ToString() == ReceivedShareDisplayName;
        });

        var ReceivedShareId = JsonDocument.Parse(myReceivedShare).RootElement.GetProperty("id").ToString();


        var attachedReceivedShareData = new
        {
            shareKind = "InPlace",
            properties = new
            {
                displayName = ReceivedShareDisplayName,
                sink = new
                {
                    storeKind = ReceiverStorageKind,
                    properties = new
                    {
                        containerName = ReceiverStorageContainer,
                        folder = ReceiverTargetFolderName,
                        mountPath = ReceiverTargetMountPath
                    },
                    storeReference = new
                    {
                        referenceName = ReceiverStorageResourceId,
                        type = "ArmResourceReference"
                    }
                }
            }
        };

        var receivedShare = await receivedSharesClient.CreateOrReplaceReceivedShareAsync(WaitUntil.Completed, ReceivedShareId, RequestContent.Create(attachedReceivedShareData));

        Console.ForegroundColor = ConsoleColor.Green;
        Console.WriteLine(receivedShare.Value);
        Console.ForegroundColor = Console.ForegroundColor;

        return receivedShare.Value;
    }

    public static async Task<List<T>> ToResultList<T>(this AsyncPageable<T> asyncPageable)
    {
        List<T> list = new List<T>();

        await foreach (T item in asyncPageable)
        {
            list.Add(item);
        }

        return list;
    }
}

Auflisten aller empfangenen Freigaben

Dieses Skript listet alle empfangenen Freigaben für ein Speicherkonto auf. Um es zu verwenden, müssen Sie die folgenden Variablen ausfüllen:

  • ReceiverTenantId : Die Azure-Mandanten-ID für den Benutzer/Dienst, der die freigegebenen Daten empfängt.
  • ReceiverPurviewAccountName : Der Name des Microsoft Purview-Kontos, in dem die Daten empfangen wurden.
  • ReceiverStorageResourceId : Die Ressourcen-ID für das Speicherkonto , in dem die Daten freigegeben wurden.
  • UseServiceTokenCredentials – (optional) Wenn Sie einen Dienstprinzipal zum Empfangen der Freigaben verwenden möchten, legen Sie dies auf true fest.
  • ReceiverClientId – (optional) Wenn Sie einen Dienstprinzipal zum Empfangen der Freigaben verwenden, ist dies die Anwendungs-ID (Client-ID) für den Dienstprinzipal.
  • ReceiverClientSecret – (optional) Wenn Sie einen Dienstprinzipal zum Empfangen der Freigaben verwenden, fügen Sie Ihren geheimen Clientschlüssel/Authentifizierungsschlüssel hinzu.
  • ReceiverPurviewEndPoint : Wenn Sie die klassische Microsoft Purview-Benutzeroberfläche verwenden, verwenden $"https://{ReceiverPurviewAccountName}.purview.azure.com"Sie ; Wenn Sie die neue Microsoft Purview-Benutzeroberfläche verwenden, verwenden Sie https://api.purview-service.microsoft.com/
using Azure;
using Azure.Analytics.Purview.Sharing;
using Azure.Core;
using Azure.Identity;

public static class PurviewDataSharingQuickStart
{
    // [REQUIRED INPUTS] Set To Actual Values.
    private static string ReceiverTenantId = "<Receiver Indentity's Tenant ID>";
    private static string ReceiverPurviewAccountName = "<Receiver Purview Account Name>";

    private static string ReceiverStorageResourceId = "<Storage Account Resource Id that is housing shares>";

    //Use if using a service principal to list shares
    private static bool UseServiceTokenCredentials = false;
    private static string ReceiverClientId = "<Receiver Caller Application (Client) Id>";
    private static string ReceiverClientSecret = "<Receiver Caller Application (Client) Secret>";

    // General Configs
    private static string ReceiverPurviewEndPoint = $"https://{ReceiverPurviewAccountName}.purview.azure.com";
    private static string ReceiverShareEndPoint = $"{ReceiverPurviewEndPoint}/share";

    private static async Task Main(string[] args)
    {
        try
        {
            TokenCredential receiverCredentials = UseServiceTokenCredentials
            ? new ClientSecretCredential(ReceiverTenantId, ReceiverClientId, ReceiverClientSecret)
            : new DefaultAzureCredential(new DefaultAzureCredentialOptions { AuthorityHost = new Uri("https://login.windows.net"), TenantId = ReceiverTenantId });

            ReceivedSharesClient? receivedSharesClient = new ReceivedSharesClient(ReceiverShareEndPoint, receiverCredentials);

            var allReceivedShares = await receivedSharesClient.GetAllAttachedReceivedSharesAsync(ReceiverStorageResourceId).ToResultList();
            Console.WriteLine(allReceivedShares);
        }
        catch (Exception ex)
        {
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine(ex);
            Console.ForegroundColor = Console.ForegroundColor;
        }
    }

    public static async Task<List<T>> ToResultList<T>(this AsyncPageable<T> asyncPageable)
    {
        List<T> list = new List<T>();

        await foreach (T item in asyncPageable)
        {
            list.Add(item);
        }

        return list;
    }
}

Empfangene Freigabe aktualisieren

Mit diesem Skript können Sie den Speicherort für eine empfangene Freigabe aktualisieren. Genau wie beim Erstellen einer empfangenen Freigabe fügen Sie die Informationen für das Speicherkonto hinzu, in dem die Daten gespeichert werden sollen. Um es zu verwenden, müssen Sie die folgenden Variablen ausfüllen:

  • ReceiverTenantId : Die Azure-Mandanten-ID für den Benutzer/Dienst, der die freigegebenen Daten empfängt.
  • ReceiverPurviewAccountName : Der Name des Microsoft Purview-Kontos, in dem die Daten empfangen werden.
  • ReceiverStorageKind – entweder BlobAccount oder AdlsGen2Account.
  • ReceiverStorageResourceId : Die Ressourcen-ID für das Speicherkonto , in dem die Daten freigegeben wurden.
  • ReAttachStorageResourceId : Die Ressourcen-ID für das Speicherkonto , in dem die Daten empfangen werden.
  • ReceiverStorageContainer : Der Name des Containers, in dem die freigegebenen Daten gespeichert werden.
  • ReceiverTargetFolderName : Der Ordnerpfad, in dem die freigegebenen Daten gespeichert werden.
  • ReceiverTargetMountPath : Der Bereitstellungspfad, den Sie zum Speichern Ihrer Daten im Ordner verwenden möchten.
  • ReceivedShareDisplayName : Der Anzeigename für Ihre empfangene Freigabe.
  • UseServiceTokenCredentials – (optional) Wenn Sie einen Dienstprinzipal zum Empfangen der Freigaben verwenden möchten, legen Sie dies auf true fest.
  • ReceiverClientId – (optional) Wenn Sie einen Dienstprinzipal zum Empfangen der Freigaben verwenden, ist dies die Anwendungs-ID (Client-ID) für den Dienstprinzipal.
  • ReceiverClientSecret – (optional) Wenn Sie einen Dienstprinzipal zum Empfangen der Freigaben verwenden, fügen Sie Ihren geheimen Clientschlüssel/Authentifizierungsschlüssel hinzu.
  • ReceiverPurviewEndPoint : Wenn Sie die klassische Microsoft Purview-Benutzeroberfläche verwenden, verwenden $"https://{ReceiverPurviewAccountName}.purview.azure.com"Sie ; Wenn Sie die neue Microsoft Purview-Benutzeroberfläche verwenden, verwenden Sie https://api.purview-service.microsoft.com/
using Azure;
using Azure.Analytics.Purview.Sharing;
using Azure.Core;
using Azure.Identity;
using System.ComponentModel;
using System.Text.Json;

public static class PurviewDataSharingQuickStart
{
    // [REQUIRED INPUTS] Set To Actual Values.
    private static string ReceiverTenantId = "<Receiver Indentity's Tenant ID>";
    private static string ReceiverPurviewAccountName = "<Receiver Purview Account Name>";

    private static string ReceiverStorageKind = "<Receiver Storage Account Kind (BlobAccount / AdlsGen2Account)>";
    private static string ReceiverStorageResourceId = "<Storage Account Resource Id for the account where the share is currently attached.>";
    private static string ReAttachStorageResourceId = "<Storage Account Resource Id For Reattaching Received Share>";
    private static string ReceiverStorageContainer = "<Container Name To Receive Data Under>";
    private static string ReceiverTargetFolderName = "<Folder Name to Received Data Under>";
    private static string ReceiverTargetMountPath = "<Mount Path to Received Data Under>";

    private static string ReceivedShareDisplayName = "<Display name of your received share>";

    //Use if using a service principal to update the share
    private static bool UseServiceTokenCredentials = false;
    private static string ReceiverClientId = "<Receiver Caller Application (Client) Id>";
    private static string ReceiverClientSecret = "<Receiver Caller Application (Client) Secret>";

    // General Configs
    private static string ReceiverPurviewEndPoint = $"https://{ReceiverPurviewAccountName}.purview.azure.com";
    private static string ReceiverShareEndPoint = $"{ReceiverPurviewEndPoint}/share";

    private static async Task Main(string[] args)
    {
        try
        {

            Console.WriteLine($"{DateTime.Now.ToShortTimeString()}: UpdateReceivedShare - START");
            await Receiver_UpdateReceivedShare();
            Console.WriteLine($"{DateTime.Now.ToShortTimeString()}: UpdateReceivedShare - FINISH");
        }
        catch (Exception ex)
        {
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine(ex);
            Console.ForegroundColor = Console.ForegroundColor;
        }
    }

    private static async Task<BinaryData> Receiver_UpdateReceivedShare()
    {

        TokenCredential receiverCredentials = UseServiceTokenCredentials
            ? new ClientSecretCredential(ReceiverTenantId, ReceiverClientId, ReceiverClientSecret)
            : new DefaultAzureCredential(new DefaultAzureCredentialOptions { AuthorityHost = new Uri("https://login.windows.net"), TenantId = ReceiverTenantId });

        ReceivedSharesClient? receivedSharesClient = new ReceivedSharesClient(ReceiverShareEndPoint, receiverCredentials);

        if (receivedSharesClient == null)
        {
            throw new InvalidEnumArgumentException("Invalid Received Shares Client.");
        }

        var attachedReceivedShareData = new
        {
            shareKind = "InPlace",
            properties = new
            {
                displayName = ReceivedShareDisplayName,
                sink = new
                {
                    storeKind = ReceiverStorageKind,
                    properties = new
                    {
                        containerName = ReceiverStorageContainer,
                        folder = ReceiverTargetFolderName,
                        mountPath = ReceiverTargetMountPath
                    },
                    storeReference = new
                    {
                        referenceName = ReAttachStorageResourceId,
                        type = "ArmResourceReference"
                    }
                }
            }
        };

        var allReceivedShares = await receivedSharesClient.GetAllAttachedReceivedSharesAsync(ReceiverStorageResourceId).ToResultList();

        var myReceivedShare = allReceivedShares.First(recShareDoc =>
        {
            var doc = JsonDocument.Parse(recShareDoc).RootElement;
            var props = doc.GetProperty("properties");
            return props.GetProperty("displayName").ToString() == ReceivedShareDisplayName;
        });

        Console.ForegroundColor = ConsoleColor.Green;
        Console.WriteLine("My Received Share Id: " + JsonDocument.Parse(myReceivedShare).RootElement.GetProperty("id").ToString());
        Console.ForegroundColor = Console.ForegroundColor;


        var ReceivedShareId = JsonDocument.Parse(myReceivedShare).RootElement.GetProperty("id").ToString();

        var receivedShare = await receivedSharesClient.CreateOrReplaceReceivedShareAsync(WaitUntil.Completed, ReceivedShareId, RequestContent.Create(attachedReceivedShareData));

        Console.ForegroundColor = ConsoleColor.Green;
        Console.WriteLine(receivedShare.Value);
        Console.ForegroundColor = Console.ForegroundColor;

        return receivedShare.Value;
    }

    public static async Task<List<T>> ToResultList<T>(this AsyncPageable<T> asyncPageable)
    {
        List<T> list = new List<T>();

        await foreach (T item in asyncPageable)
        {
            list.Add(item);
        }

        return list;
    }
}

Empfangene Freigabe löschen

Dieses Skript löscht eine empfangene Freigabe. Um es zu verwenden, müssen Sie die folgenden Variablen ausfüllen:

  • ReceiverTenantId : Die Azure-Mandanten-ID für den Benutzer/Dienst, der die freigegebenen Daten empfängt.
  • ReceiverPurviewAccountName : Der Name des Microsoft Purview-Kontos, in dem die Daten empfangen werden.
  • ReceivedShareDisplayName : Der Anzeigename für Ihre empfangene Freigabe.
  • ReceiverStorageResourceId : Die Ressourcen-ID für das Speicherkonto , in dem die Daten freigegeben wurden.
  • UseServiceTokenCredentials – (optional) Wenn Sie einen Dienstprinzipal zum Empfangen der Freigaben verwenden möchten, legen Sie dies auf true fest.
  • ReceiverClientId – (optional) Wenn Sie einen Dienstprinzipal zum Empfangen der Freigaben verwenden, ist dies die Anwendungs-ID (Client-ID) für den Dienstprinzipal.
  • ReceiverClientSecret – (optional) Wenn Sie einen Dienstprinzipal zum Empfangen der Freigaben verwenden, fügen Sie Ihren geheimen Clientschlüssel/Authentifizierungsschlüssel hinzu.
  • ReceiverPurviewEndPoint : Wenn Sie die klassische Microsoft Purview-Benutzeroberfläche verwenden, verwenden $"https://{ReceiverPurviewAccountName}.purview.azure.com"Sie ; Wenn Sie die neue Microsoft Purview-Benutzeroberfläche verwenden, verwenden Sie https://api.purview-service.microsoft.com/
using Azure;
using Azure.Analytics.Purview.Sharing;
using Azure.Core;
using Azure.Identity;
using System.Text.Json;

public static class PurviewDataSharingQuickStart
{
    // [REQUIRED INPUTS] Set To Actual Values.
    private static string ReceiverTenantId = "<Receiver Indentity's Tenant ID>";
    private static string ReceiverPurviewAccountName = "<Receiver Purview Account Name>";

    private static string ReceivedShareDisplayName = "<Display name of your received share>";

    private static string ReceiverStorageResourceId = "<Storage Account Resource Id for the account where the share is currently attached.>";

    //Use if using a service principal to delete share.
    private static bool UseServiceTokenCredentials = false;
    private static string ReceiverClientId = "<Receiver Caller Application (Client) Id>";
    private static string ReceiverClientSecret = "<Receiver Caller Application (Client) Secret>";

    // General Configs
    private static string ReceiverPurviewEndPoint = $"https://{ReceiverPurviewAccountName}.purview.azure.com";
    private static string ReceiverShareEndPoint = $"{ReceiverPurviewEndPoint}/share";

    private static async Task Main(string[] args)
    {
        try
        {
            TokenCredential receiverCredentials = UseServiceTokenCredentials
            ? new ClientSecretCredential(ReceiverTenantId, ReceiverClientId, ReceiverClientSecret)
            : new DefaultAzureCredential(new DefaultAzureCredentialOptions { AuthorityHost = new Uri("https://login.windows.net"), TenantId = ReceiverTenantId });

            ReceivedSharesClient? receivedSharesClient = new ReceivedSharesClient(ReceiverShareEndPoint, receiverCredentials);

            var allReceivedShares = await receivedSharesClient.GetAllAttachedReceivedSharesAsync(ReceiverStorageResourceId).ToResultList();

            var myReceivedShare = allReceivedShares.First(recShareDoc =>
            {
                var doc = JsonDocument.Parse(recShareDoc).RootElement;
                var props = doc.GetProperty("properties");
                return props.GetProperty("displayName").ToString() == ReceivedShareDisplayName;
            });

            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine("My Received Share Id: " + JsonDocument.Parse(myReceivedShare).RootElement.GetProperty("id").ToString());
            Console.ForegroundColor = Console.ForegroundColor;

            var ReceivedShareId = JsonDocument.Parse(myReceivedShare).RootElement.GetProperty("id").ToString();

            await receivedSharesClient.DeleteReceivedShareAsync(WaitUntil.Completed, ReceivedShareId);

            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine("Delete Complete");
            Console.ForegroundColor = Console.ForegroundColor;
        }
        catch (Exception ex)
        {
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine(ex);
            Console.ForegroundColor = Console.ForegroundColor;
        }
    }
    public static async Task<List<T>> ToResultList<T>(this AsyncPageable<T> asyncPageable)
    {
        List<T> list = new List<T>();

        await foreach (T item in asyncPageable)
        {
            list.Add(item);
        }

        return list;
    }
}

Ressourcen bereinigen

Verwenden Sie die folgenden Richtlinien, um die für den Schnellstart erstellten Ressourcen zu sauber:

  1. Löschen Sie im Microsoft Purview-Portal die gesendete Freigabe.
  2. Löschen Sie auch Ihre empfangene Freigabe.
  3. Nachdem die Freigaben erfolgreich gelöscht wurden, löschen Sie den Zielcontainer und den Ordner, den Microsoft Purview in Ihrem Zielspeicherkonto erstellt haben, als Sie freigegebene Daten erhalten haben.

Nächste Schritte