Sdílet prostřednictvím


Kurz: Důvěryhodné úložiště Media Services

Logo Media Services v3


Upozornění

Služba Azure Media Services bude vyřazena 30. června 2024. Další informace najdete v průvodci vyřazením AMS.

V tomto kurzu se naučíte:

  • Povolení důvěryhodného úložiště pro Azure Media Services
  • Jak používat spravované identity pro důvěryhodné úložiště
  • Jak poskytnout službám Azure přístup k účtu úložiště při použití řízení přístupu k síti, jako je brána firewall nebo VPN

S rozhraním API 2020-05-01 můžete povolit důvěryhodné úložiště přidružením spravované identity k účtu Media Services.

Poznámka

Důvěryhodné úložiště je dostupné jenom v rozhraní API a aktuálně není povolené v Azure Portal.

Služba Media Services může automaticky přistupovat k vašemu účtu úložiště pomocí systémového ověřování. Služba Media Services ověří, že uživatel, který přidává přidružení, má přístup k účtu úložiště pomocí Azure Resource Manager RBAC.

Použití účtů úložiště mezi předplatnými

Poznámka

Pokud je služba Media Services nakonfigurovaná tak, aby pro přístup k úložišti používala spravovanou identitu, může služba Media Services používat libovolný účet úložiště, ke kterému má spravovaná identita přístup.

Při použití ověřování systému pro úložiště musí být účet úložiště ve stejném předplatném jako účet Media Services. Pokud chcete zabránit dalším nákladům na výchozí přenos dat, použijte účty úložiště ve stejné oblasti jako účet Media Services.

Pro oba typy ověřování musí mít objekt zabezpečení, který vytvoří nebo aktualizuje účet Media Services, oprávnění Microsoft.Storage/storageAccounts/listkeys/action pro účet úložiště.

Přehled

Důležité

Pro všechny požadavky na Media Services použijte rozhraní API 2020-05-01.

Toto jsou obecné kroky pro vytvoření důvěryhodného úložiště pro Media Services:

  1. Vytvořte skupinu prostředků.
  2. Vytvoření účtu úložiště
  3. Dotazujte se na účet úložiště, dokud nebude připravený. Jakmile bude účet úložiště připravený, požadavek vrátí ID instančního objektu.
  4. Vyhledejte ID role Přispěvatel dat v objektech blob služby Storage .
  5. Zavolejte zprostředkovatele autorizace a přidejte přiřazení role.
  6. Aktualizujte účet služby Media Services tak, aby se ověřil v účtu úložiště pomocí spravované identity.
  7. Odstraňte prostředky, pokud je nechcete dál používat a účtují se vám za ně poplatky.

Požadavky

Abyste mohli začít, potřebujete předplatné Azure. Pokud nemáte předplatné Azure, vytvořte si bezplatný zkušební účet.

Získání ID tenanta a ID předplatného

Pokud nevíte, jak získat ID tenanta a ID předplatného, přečtěte si téma Jak najít vaše předplatné a ID tenanta.

Vytvoření instančního objektu a tajného klíče

Pokud nevíte, jak vytvořit instanční objekt a tajný klíč, přečtěte si téma Získání přihlašovacích údajů pro přístup k rozhraní API služby Media Services.

Použití klienta REST

Tento skript je určený pro použití s klientem REST, jako je například to, co je k dispozici v rozšířeních editoru Visual Studio Code. Přizpůsobte si ho pro své vývojové prostředí.

Nastavení počátečních proměnných

Tato část skriptu je určená pro použití v klientovi REST. Proměnné můžete ve vývojovém prostředí používat odlišně.

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

Získání tokenu pro 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

Získání tokenu pro Graph API

Tato část skriptu je určená pro použití v klientovi REST. Proměnné můžete ve vývojovém prostředí používat odlišně.

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

Získání podrobností o instančním objektu

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

Uložení ID instančního objektu

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

Vytvoření skupiny prostředků

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

Vytvoření účtu úložiště

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

Získání stavu účtu úložiště

Příprava účtu úložiště chvíli potrvá, takže se tato žádost dotazuje na jeho stav. Tento požadavek opakujte, dokud nebude účet úložiště připravený.

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

Získání podrobností o účtu úložiště

Až bude účet úložiště připravený, získejte vlastnosti účtu úložiště.

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

Získání tokenu pro 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

Vytvoření účtu Media Services se spravovanou identitou přiřazenou systémem

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

Získání definice role dat objektů blob služby 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}}

Nastavení přiřazení role úložiště

Přiřazení role říká, že instanční objekt pro účet Media Services má roli úložiště Přispěvatel dat v objektech blob služby Storage. Může to chvíli trvat a je důležité počkat, jinak účet Media Services nebude správně nastavený.

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

Udělení obejití přístupu k účtu úložiště spravované identitě

Tato akce změní přístup z identity spravované systémem na spravovanou identitu. Tímto způsobem může účet úložiště přistupovat k účtu úložiště přes bránu firewall, protože služby Azure mají přístup k účtu úložiště bez ohledu na pravidla přístupu IP adres (ACL).

Znovu počkejte, až se role přiřadí v účtu úložiště, jinak se účet Media Services nenastaví správně.

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

Aktualizace účtu Media Services tak, aby používal spravovanou identitu

Tento požadavek může být potřeba několikrát opakovat, protože rozšíření přiřazení role úložiště může trvat několik 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}}"
}

Otestovat přístup

Otestujte přístup vytvořením prostředku v účtu úložiště.

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

{
}

Odstranění prostředků

Pokud nechcete zachovat vytvořené prostředky a dál se vám za ně účtují poplatky, odstraňte 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}}

Získání nápovědy a podpory

Media Services můžete kontaktovat s dotazy nebo sledovat naše aktualizace jedním z následujících způsobů: