Delen via


Zelfstudie: Vertrouwde opslag van Media Services

Media Services-logo v3


Waarschuwing

Azure Media Services wordt op 30 juni 2024 buiten gebruik gesteld. Zie de handleiding voor buitengebruikstelling van AMS voor meer informatie.

In deze zelfstudie leert u:

  • Vertrouwde opslag inschakelen voor Azure Media Services
  • Beheerde identiteiten gebruiken voor vertrouwde opslag
  • Azure-services toegang geven tot een opslagaccount wanneer u netwerktoegangsbeheer gebruikt, zoals een firewall of VPN

Met de API 2020-05-01 kunt u vertrouwde opslag inschakelen door een beheerde identiteit te koppelen aan een Media Services-account.

Notitie

Vertrouwde opslag is alleen beschikbaar in de API en is momenteel niet ingeschakeld in de Azure Portal.

Media Services heeft automatisch toegang tot uw opslagaccount met behulp van systeemverificatie. Media Services valideert dat de gebruiker die de koppeling toevoegt, toegang heeft tot het opslagaccount met Azure Resource Manager RBAC.

Gebruik van opslagaccounts voor meerdere abonnementen

Notitie

Wanneer Media Services is geconfigureerd voor het gebruik van beheerde identiteit voor toegang tot opslag, kan Media Services elk opslagaccount gebruiken waartoe de beheerde identiteit toegang heeft.

Wanneer u systeemverificatie gebruikt voor opslag, moet het opslagaccount zich in hetzelfde abonnement bevinden als het Media Services-account. Gebruik opslagaccounts in dezelfde regio als het Media Services-account om extra kosten voor uitgaande gegevens te voorkomen.

Voor beide verificatietypen moet de principal die het Media Services-account maakt of bijwerken, de machtiging Microsoft.Storage/storageAccounts/listkeys/action hebben voor het opslagaccount.

Overzicht

Belangrijk

Gebruik de API 2020-05-01 voor alle aanvragen voor Media Services.

Dit zijn de algemene stappen voor het maken van vertrouwde opslag voor Media Services:

  1. Maak een resourcegroep.
  2. Een opslagaccount maken.
  3. Controleer het opslagaccount totdat het gereed is. Wanneer het opslagaccount klaar is, retourneert de aanvraag de service-principal-id.
  4. Zoek de id van de rol Inzender voor opslagblobgegevens .
  5. Roep de autorisatieprovider aan en voeg een roltoewijzing toe.
  6. Werk het Media Services-account bij om te verifiëren bij het opslagaccount met behulp van beheerde identiteit.
  7. Verwijder de resources als u deze niet meer wilt gebruiken en hiervoor kosten in rekening wilt brengen.

Vereisten

U hebt een Azure-abonnement nodig om aan de slag te gaan. Als u nog geen Azure-abonnement hebt, maakt u een gratis proefaccount.

Uw tenant-id en abonnements-id ophalen

Zie Uw abonnement en tenant-id vinden als u niet weet hoe u uw tenant-id en abonnements-id kunt ophalen.

Een service-principal en geheim maken

Als u niet weet hoe u een service-principal en geheim moet maken, raadpleegt u Referenties ophalen voor toegang tot de Media Services-API.

Een REST-client gebruiken

Dit script is bedoeld voor gebruik met een REST-client, zoals wat er beschikbaar is in Visual Studio-code-extensies. Pas deze aan uw ontwikkelomgeving aan.

Initiële variabelen instellen

Dit deel van het script is bedoeld voor gebruik in een REST-client. U kunt variabelen in uw ontwikkelomgeving anders gebruiken.

### 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)

Een token ophalen voor 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

Een token ophalen voor de Graph API

Dit deel van het script is bedoeld voor gebruik in een REST-client. U kunt variabelen in uw ontwikkelomgeving anders gebruiken.

// @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

Details van de service-principal ophalen

// @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}}

De service-principal-id opslaan

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

Een resourcegroep maken

// @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}}"
}

Een opslagaccount maken

// @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": {
    }
}

De status van het opslagaccount ophalen

Het duurt even voordat het opslagaccount gereed is, zodat deze aanvraag de status controleert. Herhaal deze aanvraag totdat het opslagaccount gereed is.

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

De details van het opslagaccount ophalen

Wanneer het opslagaccount klaar is, haalt u de eigenschappen van het opslagaccount op.

// @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}}

Een token ophalen voor 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

Een Media Services-account maken met een door het systeem toegewezen beheerde identiteit

// @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}}"
}

De roldefinitie opslagblobgegevens ophalen

// @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}}

De opslagroltoewijzing instellen

De roltoewijzing geeft aan dat de service-principal voor het Media Services-account de opslagrol Bijdrager voor opslagblobgegevens heeft. Dit kan even duren en het is belangrijk om te wachten, anders is het Media Services-account niet correct ingesteld.

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}}"
  }
}

Beheerde identiteiten toegang geven tot het opslagaccount

Met deze actie wordt de toegang van een door het systeem beheerde identiteit gewijzigd in de beheerde identiteit. Op deze manier heeft het opslagaccount toegang tot het opslagaccount via een firewall, omdat Azure-services toegang hebben tot het opslagaccount, ongeacht ip-toegangsregels (ACL's).

Wacht opnieuw totdat de rol is toegewezen in het opslagaccount, anders is het Media Services-account onjuist ingesteld.

// @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"
      }
    }
}

Het Media Services-account bijwerken om de beheerde identiteit te gebruiken

Deze aanvraag moet mogelijk een paar keer opnieuw worden geprobeerd, omdat het enkele minuten kan duren voordat de toewijzing van de opslagrol is doorgegeven.

// @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}}"
}

Toegang testen

Test de toegang door een asset te maken in het opslagaccount.

// @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

{
}

Resources verwijderen

Als u de resources die u hebt gemaakt niet wilt behouden en er kosten voor in rekening worden gebracht, verwijdert u ze.

### 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}}

Help en ondersteuning

U kunt contact opnemen met Media Services als u vragen hebt of onze updates op een van de volgende manieren volgen: