Tutorial: Penyimpanan tepercaya Media Services

Logo Azure Media Services v3


Peringatan

Azure Media Services akan dihentikan pada 30 Juni 2024. Untuk informasi selengkapnya, lihat Panduan Penghentian AMS.

Dalam tutorial ini Anda akan mempelajari:

  • Cara mengaktifkan penyimpanan tepercaya untuk Azure Media Services
  • Cara menggunakan Identitas Terkelola untuk penyimpanan tepercaya
  • Cara memberikan Layanan Azure akses ke akun penyimpanan saat menggunakan kontrol akses jaringan seperti firewall atau VPN

Dengan API 2020-05-01, Anda dapat mengaktifkan penyimpanan tepercaya dengan mengaitkan Identitas Terkelola dengan akun Media Services.

Catatan

Penyimpanan tepercaya hanya tersedia di API, dan saat ini tidak diaktifkan di portal Azure.

Media Services dapat secara otomatis mengakses akun penyimpanan Anda menggunakan autentikasi sistem. Media Services juga memvalidasi bahwa pengguna yang menambahkan asosiasi memiliki akses akun penyimpanan dengan RBAC Azure Resource Manager.

Penggunaan akun penyimpanan lintas langganan

Catatan

Saat Media Services dikonfigurasi untuk menggunakan Identitas Terkelola untuk mengakses penyimpanan, Media Services dapat menggunakan akun penyimpanan apa pun yang dapat diakses oleh Identitas Terkelola.

Saat menggunakan Autentikasi sistem ke penyimpanan, akun penyimpanan harus berada dalam langganan yang sama dengan akun Media Services. Menggunakan akun penyimpanan di wilayah yang sama dengan akun Azure Media Services untuk menghindari biaya data keluar tambahan.

Untuk kedua jenis autentikasi, prinsipal yang membuat atau memperbarui akun Media Services harus memiliki 'Microsoft.Storage Izin /storageAccounts/listkeys/action' melalui akun penyimpanan.

Gambaran Umum

Penting

Gunakan API 2020-05-01 untuk semua permintaan ke Media Services.

Ini adalah langkah-langkah umum untuk membuat penyimpanan tepercaya untuk Media Services:

  1. Buat grup sumber daya.
  2. Membuat akun penyimpanan.
  3. Polling akun penyimpanan sampai akun siap. Ketika akun penyimpanan siap, permintaan akan menampilkan ID perwakilan layanan.
  4. Temukan ID peran Storage Blob Data Contributor.
  5. Hubungi penyedia otorisasi dan tambahkan penetapan peran.
  6. Perbarui akun layanan media untuk mengautentikasi ke akun penyimpanan menggunakan Identitas Terkelola.
  7. Hapus sumber daya jika Anda tidak ingin terus menggunakannya dan dikenakan biaya untuk sumber daya tersebut.

Prasyarat

Anda memerlukan langganan Azure untuk memulai. Jika Anda tidak memiliki langganan Azure, buat akun coba gratis.

Dapatkan ID penyewa dan ID langganan Anda

Jika Anda tidak tahu cara mendapatkan ID penyewa dan ID langganan Anda, lihat Cara menemukan ID langganan.

Buat perwakilan layanan dan rahasia

Jika Anda tidak tahu cara membuat perwakilan layanan dan rahasia, lihat Mendapatkan informasi masuk untuk mengakses API Media Services.

Gunakan klien REST

Skrip ini ditujukan untuk digunakan dengan klien REST seperti apa yang tersedia di ekstensi kode Visual Studio. Sesuaikan untuk lingkungan pengembangan Anda.

Atur variabel awal

Bagian skrip ini untuk digunakan dalam klien REST. Anda dapat menggunakan variabel secara berbeda dalam lingkungan pengembangan Anda.

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

Dapatkan token untuk 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

Dapatkan token untuk Graph API

Bagian skrip ini untuk digunakan dalam klien REST. Anda dapat menggunakan variabel secara berbeda dalam lingkungan pengembangan Anda.

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

Dapatkan detail perwakilan layanan

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

Simpan ID perwakilan layanan

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

Membuat grup sumber daya

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

Membuat akun penyimpanan

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

Dapatkan status akun penyimpanan

Akun penyimpanan akan membutuhkan waktu cukup lama sampai siap jadi permintaan ini melakukan polling untuk statusnya. Ulangi permintaan ini hingga akun penyimpanan siap.

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

Dapatkan detail akun penyimpanan

Ketika akun penyimpanan siap, dapatkan properti akun penyimpanan.

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

Dapatkan token untuk 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

Buat akun Media Services dengan identitas terkelola yang ditetapkan sistem

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

Dapatkan definisi peran penyimpanan Storage Blob Data

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

Atur penetapan peran penyimpanan

Penetapan peran menyatakan bahwa perwakilan layanan untuk akun Media Services memiliki peran penyimpanan Storage Blob Data Contributor. Ini mungkin memakan waktu cukup lama dan penting untuk menunggu atau akun Media Services tidak akan disiapkan dengan benar.

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

Berikan akses bypass Identitas Terkelola ke akun penyimpanan

Tindakan ini mengubah akses dari identitas yang dikelola sistem ke Identitas Terkelola. Dengan begitu, akun penyimpanan dapat mengakses akun penyimpanan melalui firewall karena layanan Azure dapat mengakses akun penyimpanan terlepas dari aturan akses IP (ACL).

Sekali lagi, tunggu sampai peran telah ditetapkan di akun penyimpanan, atau akun Media Services akan disiapkan dengan tidak benar.

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

Perbarui akun Media Services untuk menggunakan Identitas Terkelola

Permintaan ini mungkin perlu dicoba ulang beberapa kali karena penetapan peran penyimpanan dapat memakan waktu beberapa menit untuk disebarluaskan.

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

Uji akses

Uji akses dengan membuat aset di akun penyimpanan.

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

{
}

Hapus sumber daya

Jika Anda tidak ingin menyimpan sumber daya yang Anda buat dan terus dikenakan biaya, hapus sumber daya tersebut.

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

Mendapatkan bantuan dan dukungan

Anda dapat menghubungi Media Services dengan pertanyaan atau mengikuti pembaruan kami dengan salah satu metode berikut: