Dela via


Självstudie: Betrodd lagring i Media Services

Media Services-logotyp v3


Varning

Azure Media Services dras tillbaka den 30 juni 2024. Mer information finns i AMS-pensionsguiden.

I den här självstudiekursen lär du dig:

  • Så här aktiverar du betrodd lagring för Azure Media Services
  • Använda hanterade identiteter för betrodd lagring
  • Så här ger du Azure-tjänster åtkomst till ett lagringskonto när du använder nätverksåtkomstkontroll, till exempel en brandvägg eller VPN

Med API:et 2020-05-01 kan du aktivera betrodd lagring genom att associera en hanterad identitet med ett Media Services-konto.

Anteckning

Betrodd lagring är endast tillgängligt i API:et och är för närvarande inte aktiverat i Azure Portal.

Media Services kan automatiskt komma åt ditt lagringskonto med hjälp av systemautentisering. Media Services verifierar att användaren som lägger till associationen har åtkomst till lagringskontot med Azure Resource Manager RBAC.

Användning av lagringskonton mellan prenumerationer

Anteckning

När Media Services har konfigurerats för att använda hanterad identitet för att få åtkomst till lagring kan Media Services använda valfritt lagringskonto som den hanterade identiteten kan komma åt.

När du använder systemautentisering till lagring måste lagringskontot finnas i samma prenumeration som Media Services-kontot. Använd lagringskonton i samma region som Media Services-kontot för att undvika ytterligare kostnader för utgående data.

För båda autentiseringstyperna måste huvudkontot som skapar eller uppdaterar Media Services-kontot ha behörigheten Microsoft.Storage/storageAccounts/listkeys/action över lagringskontot.

Översikt

Viktigt

Använd API:et 2020-05-01 för alla begäranden till Media Services.

Det här är de allmänna stegen för att skapa betrodd lagring för Media Services:

  1. Skapa en resursgrupp.
  2. Skapa ett lagringskonto.
  3. Avsök lagringskontot tills det är klart. När lagringskontot är klart returnerar begäran tjänstens huvudnamns-ID.
  4. Hitta ID:t för rollen Storage Blob Data-deltagare .
  5. Anropa auktoriseringsprovidern och lägg till en rolltilldelning.
  6. Uppdatera media services-kontot för att autentisera till lagringskontot med hjälp av hanterad identitet.
  7. Ta bort resurserna om du inte vill fortsätta att använda dem och debiteras för dem.

Förutsättningar

Du behöver en Azure-prenumeration för att komma igång. Om du inte har en Azure-prenumeration skapar du ett kostnadsfritt utvärderingskonto.

Hämta ditt klientorganisations-ID och prenumerations-ID

Om du inte vet hur du hämtar ditt klientorganisations-ID och prenumerations-ID läser du Hitta din prenumeration och ditt klientorganisations-ID.

Skapa tjänstens huvudnamn och hemlighet

Om du inte vet hur du skapar ett huvudnamn och en hemlighet för tjänsten kan du läsa Hämta autentiseringsuppgifter för att få åtkomst till Media Services API.

Använda en REST-klient

Det här skriptet är avsett att användas med en REST-klient, till exempel vad som är tillgängligt i Visual Studio-kodtillägg. Anpassa den för din utvecklingsmiljö.

Ange inledande variabler

Den här delen av skriptet är till för användning i en REST-klient. Du kan använda variabler på olika sätt i utvecklingsmiljö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)

Hämta en token 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

Hämta en token för Graph API

Den här delen av skriptet är till för användning i en REST-klient. Du kan använda variabler på olika sätt i utvecklingsmiljö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

Hämta information om tjänstens huvudnamn

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

Lagra tjänstens huvudnamns-ID

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

Skapa en resursgrupp

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

Skapa lagringskonto

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

Hämta lagringskontostatus

Det tar en stund för lagringskontot att vara klart, så den här begäran söker efter dess status. Upprepa den här begäran tills lagringskontot är klart.

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

Hämta information om lagringskontot

När lagringskontot är klart hämtar du lagringskontots egenskaper.

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

Hämta en token 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

Skapa ett Media Services-konto med en systemtilldelad hanterad identitet

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

Hämta lagringsblobdatarolldefinitionen

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

Ange tilldelning av lagringsroll

Rolltilldelningen anger att tjänstens huvudnamn för Media Services-kontot har lagringsrollen Storage Blob Data Contributor. Det kan ta en stund och det är viktigt att vänta, annars konfigureras inte Media Services-kontot korrekt.

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

Ge hanterad identitet kringgå åtkomst till lagringskontot

Den här åtgärden ändrar åtkomsten från systemhanterad identitet till den hanterade identiteten. På så sätt kan lagringskontot komma åt lagringskontot via en brandvägg eftersom Azure-tjänster kan komma åt lagringskontot oavsett IP-åtkomstregler (ACL).

Vänta tills rollen har tilldelats i lagringskontot, eller så kommer Media Services-kontot att konfigureras felaktigt.

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

Uppdatera Media Services-kontot för att använda den hanterade identiteten

Den här begäran kan behöva göras om några gånger eftersom lagringsrolltilldelningen kan ta några minuter att sprida.

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

Testa åtkomst

Testa åtkomsten genom att skapa en tillgång i lagringskontot.

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

{
}

Ta bort resurser

Om du inte vill behålla de resurser som du skapade och fortsätta att debiteras för dem tar du bort dem.

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

Få hjälp och support

Du kan kontakta Media Services med frågor eller följa våra uppdateringar med någon av följande metoder: