Udostępnij za pośrednictwem


Samouczek: zaufany magazyn usługi Media Services

Logo usługi Media Services w wersji 3


Ostrzeżenie

Usługa Azure Media Services zostanie wycofana 30 czerwca 2024 r. Aby uzyskać więcej informacji, zobacz Przewodnik po wycofaniu usługi AMS.

Niniejszy samouczek zawiera informacje na temat wykonywania następujących czynności:

  • Jak włączyć zaufany magazyn dla usługi Azure Media Services
  • Jak używać tożsamości zarządzanych do zaufanego magazynu
  • Jak zapewnić usługom platformy Azure dostęp do konta magazynu podczas korzystania z kontroli dostępu do sieci, takiej jak zapora lub sieć VPN

Za pomocą interfejsu API 2020-05-01 można włączyć zaufany magazyn, kojarząc tożsamość zarządzaną z kontem usługi Media Services.

Uwaga

Zaufany magazyn jest dostępny tylko w interfejsie API i nie jest obecnie włączony w Azure Portal.

Usługa Media Services może automatycznie uzyskiwać dostęp do konta magazynu przy użyciu uwierzytelniania systemu. Usługa Media Services sprawdza, czy użytkownik dodający skojarzenie ma dostęp do konta magazynu przy użyciu kontroli dostępu opartej na rolach platformy Azure Resource Manager.

Użycie kont magazynu między subskrypcjami

Uwaga

Gdy usługa Media Services jest skonfigurowana do używania tożsamości zarządzanej do uzyskiwania dostępu do magazynu, usługa Media Services może używać dowolnego konta magazynu, do którego może uzyskiwać dostęp tożsamość zarządzana.

W przypadku korzystania z uwierzytelniania systemowego do magazynu konto magazynu musi znajdować się w tej samej subskrypcji co konto usługi Media Services. Użyj kont magazynu w tym samym regionie co konto usługi Media Services, aby uniknąć dodatkowych kosztów ruchu wychodzącego danych.

W przypadku obu typów uwierzytelniania podmiot zabezpieczeń, który tworzy lub aktualizuje konto usługi Media Services, musi mieć uprawnienie "Microsoft.Storage/storageAccounts/listkeys/action" dla konta magazynu.

Omówienie

Ważne

Użyj interfejsu API 2020-05-01 dla wszystkich żądań do usługi Media Services.

Poniżej przedstawiono ogólne kroki tworzenia zaufanego magazynu dla usługi Media Services:

  1. Utwórz grupę zasobów.
  2. Tworzenie konta magazynu
  3. Sonduj konto magazynu, dopóki nie będzie gotowe. Gdy konto magazynu będzie gotowe, żądanie zwróci identyfikator jednostki usługi.
  4. Znajdź identyfikator roli Współautor danych obiektu blob usługi Storage .
  5. Wywołaj dostawcę autoryzacji i dodaj przypisanie roli.
  6. Zaktualizuj konto usługi Media Services, aby uwierzytelniać się na koncie magazynu przy użyciu tożsamości zarządzanej.
  7. Usuń zasoby, jeśli nie chcesz nadal ich używać i są naliczane opłaty.

Wymagania wstępne

Do rozpoczęcia pracy potrzebna jest subskrypcja platformy Azure. Jeśli nie masz subskrypcji platformy Azure, utwórz bezpłatne konto próbne.

Pobieranie identyfikatora dzierżawy i identyfikatora subskrypcji

Jeśli nie wiesz, jak uzyskać identyfikator dzierżawy i identyfikator subskrypcji, zobacz Jak znaleźć subskrypcję i identyfikator dzierżawy.

Tworzenie jednostki usługi i wpisu tajnego

Jeśli nie wiesz, jak utworzyć jednostkę usługi i wpis tajny, zobacz Uzyskiwanie poświadczeń w celu uzyskania dostępu do interfejsu API usługi Media Services.

Korzystanie z klienta REST

Ten skrypt jest przeznaczony do użytku z klientem REST, takim jak to, co jest dostępne w rozszerzeniach programu Visual Studio Code. Dostosuj go do środowiska projektowego.

Ustawianie zmiennych początkowych

Ta część skryptu jest używana w kliencie REST. Zmienne mogą być używane inaczej w środowisku deweloperów.

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

Uzyskiwanie tokenu dla usługi 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

Uzyskiwanie tokenu dla interfejs Graph API

Ta część skryptu jest używana w kliencie REST. Zmienne mogą być używane inaczej w środowisku deweloperów.

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

Pobieranie szczegółów jednostki usługi

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

Przechowywanie identyfikatora jednostki usługi

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

Tworzenie grupy zasobów

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

Tworzenie konta magazynu

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

Pobieranie stanu konta magazynu

Przygotowanie konta magazynu zajmie trochę czasu, więc to żądanie sonduje jego stan. Powtórz to żądanie, dopóki konto magazynu nie będzie gotowe.

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

Pobieranie szczegółów konta magazynu

Gdy konto magazynu jest gotowe, pobierz właściwości konta magazynu.

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

Uzyskiwanie tokenu dla usługi 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

Tworzenie konta usługi Media Services z tożsamością zarządzaną przypisaną przez system

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

Pobieranie definicji roli danych obiektu blob usługi Storage

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

Ustawianie przypisania roli magazynu

Przypisanie roli informuje, że jednostka usługi dla konta usługi Media Services ma rolę magazynu Współautor danych obiektu blob magazynu. Może to chwilę potrwać i ważne jest, aby poczekać lub konto usługi Media Services nie zostanie poprawnie skonfigurowane.

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

Przyznawanie tożsamości zarządzanej pomijania dostępu do konta magazynu

Ta akcja zmienia dostęp z tożsamości zarządzanej przez system na tożsamość zarządzaną. W ten sposób konto magazynu może uzyskiwać dostęp do konta magazynu za pośrednictwem zapory, ponieważ usługi platformy Azure mogą uzyskiwać dostęp do konta magazynu niezależnie od reguł dostępu do adresów IP (ACL).

Ponownie zaczekaj na przypisanie roli na koncie magazynu lub konto usługi Media Services zostanie skonfigurowane niepoprawnie.

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

Aktualizowanie konta usługi Media Services w celu korzystania z tożsamości zarządzanej

Może być konieczne ponowienia próby wykonania tego żądania kilka razy, ponieważ propagacja przypisania roli magazynu może potrwać kilka minut.

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

Testowanie dostępu

Przetestuj dostęp, tworząc zasób na koncie magazynu.

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

{
}

Usuwanie zasobów

Jeśli nie chcesz przechowywać utworzonych zasobów i nadal są naliczane opłaty za nie, usuń je.

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

Uzyskiwanie pomocy i obsługi technicznej

Możesz skontaktować się z usługą Media Services z pytaniami lub postępować zgodnie z naszymi aktualizacjami, korzystając z jednej z następujących metod: