Tutorial: Media Services: Vertrauenswürdiger Speicher

Media Services-Logo v3


Warnung

Azure Media Services wird am 30. Juni 2024 eingestellt. Weitere Informationen finden Sie im Leitfaden zur Einstellung von AMS.

In diesem Lernprogramm lernen Sie Folgendes:

  • Aktivieren von vertrauenswürdigem Speicher für Azure Media Services
  • Verwenden von verwalteten Identitäten für vertrauenswürdigen Speicher
  • Gewähren des Zugriffs auf ein Speicherkonto für Azure-Dienste, wenn eine Zugriffssteuerung wie eine Firewall oder ein VPN für das Netzwerk genutzt wird

Mit der 2020-05-01-API können Sie vertrauenswürdigen Speicher aktivieren, indem Sie eine verwaltete Identität einem Media Services-Konto zuordnen.

Hinweis

Der vertrauenswürdige Speicher ist nur in der API verfügbar und derzeit nicht im Azure-Portal aktiviert.

Für Media Services ist der automatische Zugriff auf Ihr Speicherkonto per Systemauthentifizierung möglich. Media Services überprüft mit der rollenbasierten Zugriffssteuerung für Azure Resource Manager, ob der Benutzer, von dem die Zuordnung hinzufügt wird, Zugriff auf das Speicherkonto hat.

Verwendung von abonnementübergreifenden Speicherkonten

Hinweis

Wenn Media Services für den Zugriff auf den Speicher mittels verwalteter Identität konfiguriert ist, kann Media Services jedes Speicherkonto verwenden, auf das die verwaltete Identität zugreifen kann.

Bei Verwendung der Systemauthentifizierung für den Zugriff auf Speicher muss sich das Speicherkonto im selben Abonnement wie das Media Services-Konto befinden. Zur Vermeidung zusätzlicher Kosten für ausgehenden Datenverkehr sollten Sie Ihre Speicherkonten in derselben Region einrichten, in der sich das Media Services-Konto befindet.

Für beide Authentifizierungstypen muss der Prinzipal, der das Media Services-Konto erstellt oder aktualisiert, über die Berechtigung „Microsoft.Storage /storageAccounts/listkeys/action“ für das Speicherkonto verfügen.

Übersicht

Wichtig

Verwenden Sie die 2020-05-01-API für alle Anforderungen an Media Services.

Hier sind die allgemeinen Schritte zum Erstellen von vertrauenswürdigem Speicher für Media Services angegeben:

  1. Erstellen Sie eine Ressourcengruppe.
  2. Erstellen Sie ein Speicherkonto.
  3. Fragen Sie das Speicherkonto ab, bis es bereit ist. Wenn das Speicherkonto bereit ist, wird über die Anforderung die Dienstprinzipal-ID zurückgegeben.
  4. Suchen Sie nach der ID der Rolle Mitwirkender an Storage-Blobdaten.
  5. Rufen Sie den Autorisierungsanbieter auf, und fügen Sie eine Rollenzuweisung hinzu.
  6. Aktualisieren Sie das Media Services-Konto, um die Authentifizierung beim Speicherkonto über die verwaltete Identität durchzuführen.
  7. Löschen Sie die Ressourcen, falls Sie sie nicht weiterverwenden und dafür das Anfallen von Gebühren vermeiden möchten.

Voraussetzungen

Sie benötigen ein Azure-Abonnement, um beginnen zu können. Falls Sie noch nicht über ein Azure-Abonnement verfügen, können Sie ein kostenloses Testkonto erstellen.

Abrufen Ihrer Mandanten-ID und Abonnement-ID

Falls Sie nicht wissen, wie Sie Ihre Mandanten-ID und Abonnement-ID abrufen, finden Sie Informationen dazu unter Suchen Ihrer Abonnement- und Mandanten-ID.

Erstellen eines Dienstprinzipals und eines Geheimnisses

Lesen Sie den Artikel Abrufen von Anmeldeinformationen für den Zugriff auf die Media Services-API, falls Sie nicht wissen, wie Sie einen Dienstprinzipal und ein Geheimnis erstellen.

Verwenden eines REST-Clients

Dieses Skript ist für die Verwendung mit einem REST-Client bestimmt, z. B. über Visual Studio-Codeerweiterungen. Passen Sie es an Ihre Entwicklungsumgebung an.

Festlegen von Anfangsvariablen

Dieser Teil des Skripts ist für die Verwendung in einem REST-Client vorgesehen. Sie können Variablen in Ihrer Entwicklungsumgebung auf unterschiedliche Weise nutzen.

### AAD details
@tenantId = your tenant ID
@servicePrincipalId = the service principal ID
@servicePrincipalSecret = the service principal secret

### AAD resources
@armResource = https%3A%2F%2Fmanagement.core.windows.net%2F
@graphResource = https%3A%2F%2Fgraph.windows.net%2F
@storageResource = https%3A%2F%2Fstorage.azure.com%2F

### Service endpoints
@armEndpoint = management.azure.com
@graphEndpoint = graph.windows.net
@aadEndpoint = login.microsoftonline.com

### ARM details
@subscription = your subscription id
@resourceGroup = the resource group you'll be creating
@storageName = the name of the storage you'll be creating
@accountName = the name of the account you'll be creating
@resourceLocation = East US (or the location that works best for your region)

Abrufen eines Tokens für Azure Resource Manager

// @name getArmToken
POST https://{{aadEndpoint}}/{{tenantId}}/oauth2/token
Accept: application/json
Content-Type: application/x-www-form-urlencoded

resource={{armResource}}&client_id={{servicePrincipalId}}&client_secret={{servicePrincipalSecret}}&grant_type=client_credentials

Abrufen eines Tokens für die Graph-API

Dieser Teil des Skripts ist für die Verwendung in einem REST-Client vorgesehen. Sie können Variablen in Ihrer Entwicklungsumgebung auf unterschiedliche Weise nutzen.

// @name getGraphToken
POST https://{{aadEndpoint}}/{{tenantId}}/oauth2/token
Accept: application/json
Content-Type: application/x-www-form-urlencoded

resource={{graphResource}}&client_id={{servicePrincipalId}}&client_secret={{servicePrincipalSecret}}&grant_type=client_credentials

Abrufen der Details zu Dienstprinzipalen

// @name getServicePrincipals
GET https://{{graphEndpoint}}/{{tenantId}}/servicePrincipals?$filter=appId%20eq%20'{{servicePrincipalId}}'&api-version=1.6
x-ms-client-request-id: cae3e4f7-17a0-476a-a05a-0dab934ba959
Authorization:  Bearer {{getGraphToken.response.body.access_token}}

Speichern der Dienstprinzipal-ID

@servicePrincipalObjectId = {{getServicePrincipals.response.body.value[0].objectId}}

Erstellen einer Ressourcengruppe

// @name createResourceGroup
PUT https://{{armEndpoint}}/subscriptions/{{subscription}}/resourceGroups/{{resourceGroup}}
    ?api-version=2016-09-01
Authorization: Bearer {{getArmToken.response.body.access_token}}
Content-Type: application/json; charset=utf-8

{
    "location": "{{resourceLocation}}"
}

Speicherkonto erstellen

// @name createStorageAccount
PUT https://{{armEndpoint}}/subscriptions/{{subscription}}/resourceGroups/{{resourceGroup}}/providers/Microsoft.Storage/storageAccounts/{{storageName}}
    ?api-version=2019-06-01
Authorization: Bearer {{getArmToken.response.body.access_token}}
Content-Type: application/json; charset=utf-8

{
    "sku": {
    "name": "Standard_GRS"
    },
    "kind": "StorageV2",
    "location": "{{resourceLocation}}",
    "properties": {
    }
}

Abrufen des Status des Speicherkontos

Da es eine Weile dauert, bis das Speicherkonto bereit ist, fragt diese Anforderung dessen Status ab. Wiederholen Sie diese Anforderung, bis das Speicherkonto bereit ist.

// @name getStorageAccountStatus
GET {{createStorageAccount.response.headers.Location}}
Authorization: Bearer {{getArmToken.response.body.access_token}}

Abrufen der Details des Speicherkontos

Rufen Sie die Eigenschaften des Speicherkontos ab, wenn es bereit ist.

// @name getStorageAccount
GET https://{{armEndpoint}}/subscriptions/{{subscription}}/resourceGroups/{{resourceGroup}}/providers/Microsoft.Storage/storageAccounts/{{storageName}}
    ?api-version=2019-06-01
Authorization: Bearer {{getArmToken.response.body.access_token}}

Abrufen eines Tokens für ARM

// @name getStorageToken
POST https://{{aadEndpoint}}/{{tenantId}}/oauth2/token
Accept: application/json
Content-Type: application/x-www-form-urlencoded

resource={{storageResource}}&client_id={{servicePrincipalId}}&client_secret={{servicePrincipalSecret}}&grant_type=client_credentials

Erstellen eines Media Services-Kontos mit einer systemseitig zugewiesenen verwalteten Identität

// @name createMediaServicesAccount
PUT https://{{armEndpoint}}/subscriptions/{{subscription}}/resourceGroups/{{resourceGroup}}/providers/Microsoft.Media/mediaservices/{{accountName}}?api-version=2020-05-01
Authorization: Bearer {{getArmToken.response.body.access_token}}
Content-Type: application/json; charset=utf-8

{
  "identity": {
      "type": "SystemAssigned"
  },
  "properties": {
    "storageAccounts": [
      {
        "id": "{{getStorageAccountStatus.response.body.id}}"
      }
    ],
    "encryption": {
      "type": "SystemKey"
    }
  },
  "location": "{{resourceLocation}}"
}

Abrufen der Definition für die Speicherblobdaten-Rolle des Speichers

// @name getStorageBlobDataContributorRoleDefinition
GET https://management.azure.com/subscriptions/{{subscription}}/resourceGroups/{{resourceGroup}}/providers/Microsoft.Storage/storageAccounts/{{storageName}}/providers/Microsoft.Authorization/roleDefinitions?$filter=roleName%20eq%20%27Storage%20Blob%20Data%20Contributor%27&api-version=2015-07-01
Authorization: Bearer {{getArmToken.response.body.access_token}}

Festlegen der Speicherrollenzuweisung

Die Rollenzuweisung enthält die Information, dass der Dienstprinzipal für das Media Services-Konto über die Speicherrolle Mitwirkender an Storage-Blobdaten verfügt. Dies kann eine Weile dauern, und es sollte unbedingt abgewartet werden, weil das Media Services-Konto sonst ggf. nicht richtig eingerichtet wird.

PUT https://management.azure.com/subscriptions/{{subscription}}/resourceGroups/{{resourceGroup}}/providers/Microsoft.Storage/storageAccounts/{{storageName}}/providers/Microsoft.Authorization/roleAssignments/{{$guid}}?api-version=2020-04-01-preview
Authorization: Bearer {{getArmToken.response.body.access_token}}
Content-Type: application/json; charset=utf-8

{
  "properties": {
    "roleDefinitionId": "/subscriptions/{{subscription}}/resourceGroups/{{resourceGroup}}/providers/Microsoft.Storage/storageAccounts/{{storageName}}/providers/Microsoft.Authorization/roleDefinitions/{{getStorageBlobDataContributorRoleDefinition.response.body.value[0].name}}",
    "principalId": "{{createMediaServicesAccount.response.body.identity.principalId}}"
  }
}

Gewähren von Umgehungszugriff auf das Speicherkonto für die verwaltete Identität

Mit diesem Vorgang wird der Zugriff von der systemseitig verwalteten Identität auf die verwaltete Identität umgestellt. Auf diese Weise ist der Zugriff auf das Speicherkonto über eine Firewall möglich, da Azure-Dienste unabhängig von IP-Zugriffsregeln (ACLs) auf das Speicherkonto zugreifen können.

Warten Sie wieder ab, bis die Rolle dem Speicherkonto zugewiesen wurde, da das Media Services-Konto sonst nicht richtig eingerichtet wird.

// @name setStorageAccountFirewall
PUT https://{{armEndpoint}}/subscriptions/{{subscription}}/resourceGroups/{{resourceGroup}}/providers/Microsoft.Storage/storageAccounts/{{storageName}}
    ?api-version=2019-06-01
Authorization: Bearer {{getArmToken.response.body.access_token}}
Content-Type: application/json; charset=utf-8

{
    "sku": {
    "name": "Standard_GRS"
    },
    "kind": "StorageV2",
    "location": "{{resourceLocation}}",
    "properties": {
      "minimumTlsVersion": "TLS1_2",
      "networkAcls": {
        "bypass": "AzureServices",
        "virtualNetworkRules": [],
        "ipRules": [],
        "defaultAction": "Deny"
      }
    }
}

Aktualisieren des Media Services-Kontos für die Verwendung der verwalteten Identität

Diese Anforderung muss ggf. mehrmals wiederholt werden, weil es einige Minuten dauern kann, bis die Speicherrollenzuweisung richtig verteilt wurde.

// @name updateMediaServicesAccountWithManagedStorageAuth
PUT https://{{armEndpoint}}/subscriptions/{{subscription}}/resourceGroups/{{resourceGroup}}/providers/Microsoft.Media/mediaservices/{{accountName}}?api-version=2020-05-01
Authorization: Bearer {{getArmToken.response.body.access_token}}
Content-Type: application/json; charset=utf-8

{
  "identity": {
      "type": "SystemAssigned"
  },
  "properties": {
    "storageAccounts": [
      {
        "id": "{{getStorageAccountStatus.response.body.id}}"
      }
    ],
    "storageAuthentication": "ManagedIdentity",
    "encryption": {
      "type": "SystemKey"
    }
  },
  "location": "{{resourceLocation}}"
}

Testen des Zugriffs

Testen Sie den Zugriff, indem Sie im Speicherkonto ein Objekt erstellen.

// @name createAsset
PUT https://{{armEndpoint}}/subscriptions/{{subscription}}/resourceGroups/{{resourceGroup}}/providers/Microsoft.Media/mediaservices/{{accountName}}/assets/testasset{{index}}withoutmi?api-version=2018-07-01
Authorization: Bearer {{getArmToken.response.body.access_token}}
Content-Type: application/json; charset=utf-8

{
}

Löschen von Ressourcen

Wenn Sie die von Ihnen erstellten Ressourcen nicht beibehalten und das Anfallen weiterer Gebühren verhindern möchten, sollten Sie sie löschen.

### Clean up the Storage account
DELETE https://{{armEndpoint}}/subscriptions/{{subscription}}/resourceGroups/{{resourceGroup}}/providers/Microsoft.Storage/storageAccounts/{{storageName}}
    ?api-version=2019-06-01
Authorization: Bearer {{getArmToken.response.body.access_token}}

### Clean up the Media Services account
DELETE https://{{armEndpoint}}/subscriptions/{{subscription}}/resourceGroups/{{resourceGroup}}/providers/Microsoft.Media/mediaservices/{{accountName}}?api-version=2020-05-01
Authorization: Bearer {{getArmToken.response.body.access_token}}

### Clean up the Media Services account
GET https://{{armEndpoint}}/subscriptions/{{subscription}}/resourceGroups/{{resourceGroup}}/providers/Microsoft.Media/mediaservices/{{accountName}}?api-version=2020-05-01
Authorization: Bearer {{getArmToken.response.body.access_token}}

Anfordern von Hilfe und Support

Sie können Media Services mit Fragen kontaktieren oder unsere Updates mit einer der folgenden Methoden verfolgen: