Memahami definisi peran Azure

Jika Anda mencoba memahami cara kerja peran Azure atau jika Anda membuat peran kustom Azure Anda sendiri, akan sangat membantu untuk memahami bagaimana peran didefinisikan. Artikel ini menjelaskan detail definisi peran dan memberikan beberapa contoh.

Definisi peran

Definisi peran adalah kumpulan izin. Terkadang hanya disebut peran. Definisi peran mencantumkan operasi yang dapat dilakukan, seperti membaca, menulis, dan menghapus. Definisi peran juga dapat mencantumkan tindakan yang dikecualikan dari tindakan yang diizinkan atau tindakan yang terkait dengan data yang mendasarinya.

Berikut ini memperlihatkan contoh properti dalam definisi peran saat ditampilkan menggunakan Azure PowerShell:

Name
Id
IsCustom
Description
Actions []
NotActions []
DataActions []
NotDataActions []
AssignableScopes []
Condition
ConditionVersion

Berikut ini memperlihatkan contoh properti dalam definisi peran saat ditampilkan menggunakan Azure CLI atau REST API:

roleName
name
id
roleType
type
description
actions []
notActions []
dataActions []
notDataActions []
assignableScopes []
condition
conditionVersion
createdOn
updatedOn
createdBy
updatedBy

Tabel berikut menjelaskan apa yang dimaksud dengan properti peran.

Properti Deskripsi
Name
roleName
Tampilkan nama peran.
Id
name
ID unik peran. Peran bawaan memiliki ID peran yang sama di seluruh cloud.
id ID unik peran yang sepenuhnya memenuhi syarat.
IsCustom
roleType
Menunjukkan apakah peran ini adalah peran kustom. Atur ke true atau CustomRole untuk peran kustom. Atur ke false atau BuiltInRole untuk peran bawaan.
type Jenis objek. Atur ke Microsoft.Authorization/roleDefinitions.
Description
description
Deskripsi peran.
Actions
actions
Array string yang menentukan tindakan sarana kontrol yang memungkinkan peran untuk dilakukan.
NotActions
notActions
Array string yang menentukan tindakan sarana kontrol yang dikecualikan dari yang diizinkan Actions.
DataActions
dataActions
Array string yang menentukan tindakan bidang data yang perannya memungkinkan untuk dilakukan ke data Anda dalam objek tersebut.
NotDataActions
notDataActions
Array string yang menentukan tindakan bidang data yang dikecualikan dari yang diizinkan DataActions.
AssignableScopes
assignableScopes
Array string yang menentukan cakupan yang tersedia untuk penetapan peran.
Condition
condition
Untuk peran bawaan, pernyataan kondisi berdasarkan satu atau beberapa tindakan dalam definisi peran.
ConditionVersion
conditionVersion
Nomor versi kondisi. Default ke 2.0 dan merupakan satu-satunya versi yang didukung.
createdOn Peran tanggal dan waktu dibuat.
updatedOn Peran tanggal dan waktu terakhir diperbarui.
createdBy Untuk peran kustom, utama yang membuat peran.
updatedBy Untuk peran kustom, utama yang memperbarui peran.

Format tindakan

Tindakan ditentukan dengan untai (karakter) yang memiliki format berikut:

  • {Company}.{ProviderName}/{resourceType}/{action}

Bagian {action} dari untai (karakter) tindakan menentukan jenis tindakan yang dapat Anda lakukan pada jenis sumber daya. Misalnya, Anda akan melihat substring berikut di {action}:

Substring tindakan Deskripsi
* Karakter kartubebas memberikan akses ke semua tindakan yang cocok dengan untai (karakter).
read Mengaktifkan tindakan baca (GET).
write Mengaktifkan tindakan tulis (PUT atau PATCH).
action Mengaktifkan tindakan kustom seperti menghidupkan ulang mesin virtual (POST).
delete Mengaktifkan tindakan hapus (DELETE).

Contoh definisi peran

Berikut definisi peran Kontributor seperti yang ditampilkan di Azure PowerShell dan Azure CLI. Tindakan kartubebas (*) di bawah Actions menunjukkan bahwa perwakilan yang ditugaskan untuk peran ini dapat melakukan semua tindakan, atau dengan kata lain, dapat mengelola semuanya. Ini termasuk tindakan yang ditentukan di masa mendatang, karena Azure menambahkan jenis sumber daya baru. Tindakan di bawah NotActions dikurangi dari Actions. Dalam kasus peran Kontributor, NotActions menghapus kemampuan peran ini untuk mengelola akses ke sumber daya dan juga mengelola penugasan Azure Blueprints.

Peran kontributor seperti yang ditampilkan di Azure PowerShell:

{
  "Name": "Contributor",
  "Id": "b24988ac-6180-42a0-ab88-20f7382dd24c",
  "IsCustom": false,
  "Description": "Grants full access to manage all resources, but does not allow you to assign roles in Azure RBAC, manage assignments in Azure Blueprints, or share image galleries.",
  "Actions": [
    "*"
  ],
  "NotActions": [
    "Microsoft.Authorization/*/Delete",
    "Microsoft.Authorization/*/Write",
    "Microsoft.Authorization/elevateAccess/Action",
    "Microsoft.Blueprint/blueprintAssignments/write",
    "Microsoft.Blueprint/blueprintAssignments/delete",
    "Microsoft.Compute/galleries/share/action",
    "Microsoft.Purview/consents/write",
    "Microsoft.Purview/consents/delete"
  ],
  "DataActions": [],
  "NotDataActions": [],
  "AssignableScopes": [
    "/"
  ],
  "Condition": null,
  "ConditionVersion": null
}

Peran kontributor seperti yang ditampilkan di Azure CLI:

[
  {
    "assignableScopes": [
      "/"
    ],
    "createdBy": null,
    "createdOn": "2015-02-02T21:55:09.880642+00:00",
    "description": "Grants full access to manage all resources, but does not allow you to assign roles in Azure RBAC, manage assignments in Azure Blueprints, or share image galleries.",
    "id": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c",
    "name": "b24988ac-6180-42a0-ab88-20f7382dd24c",
    "permissions": [
      {
        "actions": [
          "*"
        ],
        "condition": null,
        "conditionVersion": null,
        "dataActions": [],
        "notActions": [
          "Microsoft.Authorization/*/Delete",
          "Microsoft.Authorization/*/Write",
          "Microsoft.Authorization/elevateAccess/Action",
          "Microsoft.Blueprint/blueprintAssignments/write",
          "Microsoft.Blueprint/blueprintAssignments/delete",
          "Microsoft.Compute/galleries/share/action",
          "Microsoft.Purview/consents/write",
          "Microsoft.Purview/consents/delete"
        ],
        "notDataActions": []
      }
    ],
    "roleName": "Contributor",
    "roleType": "BuiltInRole",
    "type": "Microsoft.Authorization/roleDefinitions",
    "updatedBy": null,
    "updatedOn": "2023-07-10T15:10:53.947865+00:00"
  }
]

Tindakan kontrol dan data

Kontrol akses berbasis peran untuk tindakan sarana kontrol ditentukan dalam properti Actions dan NotActions dari definisi peran. Berikut adalah beberapa contoh tindakan sarana kontrol di Azure:

  • Mengelola akses ke akun penyimpanan
  • Membuat, memperbarui, atau menghapus kontainer blob
  • Menghapus grup sumber daya dan semua sumber dayanya

Akses sarana kontrol tidak diwariskan ke bidang data Anda asalkan metode autentikasi kontainer diatur ke Akun Pengguna Azure AD dan bukan Kunci Akses. Pemisahan ini mencegah peran dengan kartubebas (*) memiliki akses tak terbatas ke data Anda. Misalnya, jika pengguna memiliki peran Pembaca pada langganan, mereka dapat melihat akun penyimpanan, tetapi secara default mereka tidak dapat melihat data yang mendasarinya.

Sebelumnya, kontrol akses berbasis peran tidak digunakan untuk tindakan data. Otorisasi untuk tindakan data bervariasi di seluruh penyedia sumber. Model otorisasi kontrol akses berbasis peran yang sama yang digunakan untuk tindakan sarana kontrol telah diperluas ke tindakan data plane.

Untuk mendukung tindakan data plane, properti data baru telah ditambahkan ke definisi peran. Tindakan data plane ditentukan dalam properti DataActions dan NotDataActions. Dengan menambahkan properti data ini, pemisahan antara sarana kontrol dan data plane dipertahankan. Ini mencegah penetapan peran saat ini dengan kartubebas (*) tiba-tiba memiliki akses data. Berikut adalah beberapa tindakan data plane yang dapat ditentukan dalam DataActions dan NotDataActions:

  • Membaca daftar blob dalam kontainer
  • Menulis blob penyimpanan dalam kontainer
  • Menghapus pesan dalam antrean

Berikut definisi peran Pembaca Data Blob Penyimpanan, yang mencakup tindakan di properti Actions dan DataActions. Peran ini memungkinkan Anda membaca kontainer blob dan juga data blob yang mendasarinya.

Peran Pembaca Data Blob Penyimpanan seperti yang ditampilkan di Azure PowerShell:

{
  "Name": "Storage Blob Data Reader",
  "Id": "2a2b9908-6ea1-4ae2-8e65-a410df84e7d1",
  "IsCustom": false,
  "Description": "Allows for read access to Azure Storage blob containers and data",
  "Actions": [
    "Microsoft.Storage/storageAccounts/blobServices/containers/read",
    "Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey/action"
  ],
  "NotActions": [],
  "DataActions": [
    "Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read"
  ],
  "NotDataActions": [],
  "AssignableScopes": [
    "/"
  ],
  "Condition": null,
  "ConditionVersion": null
}

Peran Pembaca Data Blob Penyimpanan seperti yang ditampilkan di Azure CLI:

[
  {
    "assignableScopes": [
      "/"
    ],
    "createdBy": null,
    "createdOn": "2017-12-21T00:01:24.797231+00:00",
    "description": "Allows for read access to Azure Storage blob containers and data",
    "id": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/2a2b9908-6ea1-4ae2-8e65-a410df84e7d1",
    "name": "2a2b9908-6ea1-4ae2-8e65-a410df84e7d1",
    "permissions": [
      {
        "actions": [
          "Microsoft.Storage/storageAccounts/blobServices/containers/read",
          "Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey/action"
        ],
        "condition": null,
        "conditionVersion": null,
        "dataActions": [
          "Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read"
        ],
        "notActions": [],
        "notDataActions": []
      }
    ],
    "roleName": "Storage Blob Data Reader",
    "roleType": "BuiltInRole",
    "type": "Microsoft.Authorization/roleDefinitions",
    "updatedBy": null,
    "updatedOn": "2021-11-11T20:13:55.297507+00:00"
  }
]

Hanya tindakan data plane yang dapat ditambahkan ke properti DataActions dan NotDataActions. Penyedia sumber mengidentifikasi tindakan mana yang merupakan tindakan data, dengan mengatur properti isDataAction ke true. Untuk melihat daftar tindakan dengan isDataAction adalah true, lihat Operasi penyedia sumber. Peran yang tidak memiliki tindakan data tidak diharuskan memiliki properti DataActions dan NotDataActions dalam definisi peran.

Otorisasi untuk semua panggilan API sarana kontrol ditangani oleh Azure Resource Manager. Otorisasi untuk panggilan API data plane ditangani oleh penyedia sumber atau Azure Resource Manager.

Contoh tindakan data

Untuk lebih memahami cara kerja sarana kontrol dan tindakan data plane, mari pertimbangkan contoh spesifik. Alice telah diberi peran Pemilik pada cakupan langganan. Bob telah diberi peran Kontributor Data Blob Penyimpanan pada cakupan akun penyimpanan. Diagram berikut menunjukkan contoh ini.

Role-based access control has been extended to support both control plane and data plane actions

Peran Pemilik untuk Alice dan peran Kontributor Data Blob Penyimpanan untuk Bob memiliki tindakan berikut:

Pemilik

    Tindakan
    *

Data blob penyimpanan kontributor

    Tindakan
    Microsoft.Storage/storageAccounts/blobServices/containers/delete
    Microsoft.Storage/storageAccounts/blobServices/containers/read
    Microsoft.Storage/storageAccounts/blobServices/containers/write
    Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey/action
    DataActions
    Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete
    Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
    Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write
    Microsoft.Storage/storageAccounts/blobServices/containers/blobs/move/action
    Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action

Karena Alice memiliki tindakan kartubebas (*) pada cakupan langganan, izin Alice diturunkan untuk memungkinkan Alice melakukan semua tindakan sarana kontrol. Alice dapat membaca, menulis, dan menghapus kontainer. Namun, Alice tidak dapat melakukan tindakan data plane tanpa mengambil langkah tambahan. Misalnya, secara default, Alice tidak dapat membaca blob di dalam kontainer. Untuk membaca blob, Alice harus mengambil kunci akses penyimpanan dan menggunakannya untuk mengakses blob.

Izin Bob dibatasi hanya untuk Actions dan DataActions yang ditentukan dalam peran Kontributor Data Blob Penyimpanan. Berdasarkan perannya, Bob dapat melakukan tindakan sarana kontrol dan data plane. Misalnya, Bob dapat membaca, menulis, dan menghapus kontainer di akun penyimpanan yang ditentukan dan juga dapat membaca, menulis, dan menghapus blob.

Untuk informasi selengkapnya tentang kontrol dan keamanan data plane untuk penyimpanan, lihat panduan keamanan Azure Storage.

Alat apa yang mendukung penggunaan peran Azure untuk tindakan data?

Untuk melihat dan bekerja dengan tindakan data, Anda harus memiliki versi alat atau SDK yang benar:

Alat Versi
Azure PowerShell 1.1.0 atau yang lebih baru
Azure CLI 2.0.30 atau yang lebih baru
Azure untuk .NET 2.8.0-pratinjau atau yang lebih baru
Azure SDK untuk Go 15.0.0 atau yang lebih baru
Azure untuk Java 1.9.0 atau yang lebih baru
Azure untuk Python 0.40.0 atau yang lebih baru
Azure SDK untuk Ruby 0.17.1 atau yang lebih baru

Untuk melihat dan menggunakan tindakan data di REST API, Anda harus mengatur parameter versi api ke versi berikut atau yang lebih baru:

  • 2018-07-01

Tindakan

Izin Actions menentukan tindakan sarana kontrol yang perannya memungkinkan untuk dilakukan. Izin ini adalah kumpulan untai (karakter) yang mengidentifikasi tindakan yang aman dari penyedia sumber Azure. Berikut adalah beberapa contoh tindakan sarana kontrol di yang dapat digunakan di Actions.

Untai (karakter) tindakan Deskripsi
*/read Memberikan akses ke tindakan baca untuk semua jenis sumber daya dari semua penyedia sumber Azure.
Microsoft.Compute/* Memberikan akses ke semua tindakan untuk semua jenis sumber daya di penyedia sumber Microsoft.Compute.
Microsoft.Network/*/read Memberikan akses ke tindakan baca untuk semua jenis sumber daya di penyedia sumber Microsoft.Network.
Microsoft.Compute/virtualMachines/* Memberikan akses ke semua tindakan mesin virtual dan jenis sumber daya anak.
microsoft.web/sites/restart/Action Memberikan akses untuk menghidupkan ulang aplikasi web.

NotActions

Izin NotActions menentukan tindakan sarana kontrol yang dikurangi atau dikecualikan dari Actions yang diizinkan yang memiliki kartubebas (*). Gunakan izin NotActions jika set tindakan yang ingin Anda izinkan lebih mudah ditentukan dengan mengurangi dari Actions yang memiliki kartubebas (*). Akses yang diberikan oleh peran (izin efektif) dihitung dengan mengurangi tindakan NotActions dari tindakan Actions.

Actions - NotActions = Effective control plane permissions

Tabel berikut menunjukkan dua contoh izin sarana kontrol efektif untuk tindakan kartubebas Microsoft.CostManagement:

Tindakan NotActions Izin sarana kontrol yang efektif
Microsoft.CostManagement/exports/* Tidak ada Microsoft.CostManagement/exports/action
Microsoft.CostManagement/exports/read
Microsoft.CostManagement/exports/write
Microsoft.CostManagement/exports/delete
Microsoft.CostManagement/exports/run/action
Microsoft.CostManagement/exports/* Microsoft.CostManagement/exports/delete Microsoft.CostManagement/exports/action
Microsoft.CostManagement/exports/read
Microsoft.CostManagement/exports/write
Microsoft.CostManagement/exports/run/action

Catatan

Jika pengguna diberi peran yang mengecualikan tindakan di NotActions, dan diberi peran kedua yang memberikan akses ke tindakan yang sama, pengguna diizinkan untuk melakukan tindakan itu. NotActions bukan aturan penolakan – ini hanyalah cara mudah untuk membuat kumpulan tindakan yang diizinkan saat tindakan tertentu perlu dikecualikan.

Perbedaan antara NotActions dan menolak tugas

NotActions dan menolak tugas tidak sama dan melayani tujuan yang berbeda. NotActions adalah cara mudah untuk mengurangi tindakan tertentu dari tindakan kartubebas (*).

Tolak penetapan memblokir pengguna dari melakukan tindakan tertentu meskipun penetapan peran memberi mereka akses. Untuk informasi selengkapnya, lihat Memahami Penetapan penolakan Azure.

DataActions

Izin DataActions menentukan tindakan data plane yang diizinkan peran untuk dilakukan pada data Anda di dalam objek itu. Misalnya, jika pengguna telah membaca akses data blob ke akun penyimpanan, mereka dapat membaca blob dalam akun penyimpanan tersebut. Berikut adalah beberapa contoh tindakan data yang dapat digunakan di DataActions.

Untai (karakter) tindakan data Deskripsi
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read Mengembalikan blob atau daftar blob.
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write Mengembalikan hasil penulisan blob.
Microsoft.Storage/storageAccounts/queueServices/queues/messages/read Mengembalikan pesan.
Microsoft.Storage/storageAccounts/queueServices/queues/messages/* Mengembalikan pesan atau hasil penulisan atau penghapusan pesan.

NotDataActions

Izin NotDataActions menentukan tindakan data plane yang dikurangi atau dikecualikan dari DataActions yang diizinkan yang memiliki kartubebas (*). Gunakan izin NotDataActions jika set tindakan yang ingin Anda izinkan lebih mudah ditentukan dengan mengurangi dari DataActions yang memiliki kartubebas (*). Akses yang diberikan oleh peran (izin efektif) dihitung dengan mengurangi tindakan NotDataActions dari tindakan DataActions. Setiap penyedia sumber menyediakan set API masing-masing untuk memenuhi tindakan data.

DataActions - NotDataActions = Effective data plane permissions

Tabel berikut menunjukkan dua contoh izin data plane efektif untuk operasi kartubebas Microsoft.Storage:

DataActions NotDataActions Izin data plane yang efektif
Microsoft.Storage/storageAccounts/queueServices/queues/messages/* Tidak ada Microsoft.Storage/storageAccounts/queueServices/queues/messages/read
Microsoft.Storage/storageAccounts/queueServices/queues/messages/write
Microsoft.Storage/storageAccounts/queueServices/queues/messages/delete
Microsoft.Storage/storageAccounts/queueServices/queues/messages/add/action
Microsoft.Storage/storageAccounts/queueServices/queues/messages/process/action
Microsoft.Storage/storageAccounts/queueServices/queues/messages/* Microsoft.Storage/storageAccounts/queueServices/queues/messages/delete
Microsoft.Storage/storageAccounts/queueServices/queues/messages/read
Microsoft.Storage/storageAccounts/queueServices/queues/messages/write
Microsoft.Storage/storageAccounts/queueServices/queues/messages/add/action
Microsoft.Storage/storageAccounts/queueServices/queues/messages/process/action

Catatan

Jika pengguna diberi peran yang mengecualikan tindakan data di NotDataActions, dan diberi peran kedua yang memberikan akses ke tindakan data yang sama, pengguna diizinkan untuk melakukan tindakan data tersebut. NotDataActions bukan aturan penolakan – ini hanyalah cara mudah untuk membuat kumpulan tindakan data yang diizinkan saat tindakan data tertentu perlu dikecualikan.

AssignableScopes

Properti AssignableScopes menentukan cakupan (akar, grup manajemen, langganan, atau grup sumber daya) tempat definisi peran dapat ditetapkan. Anda dapat membuat peran kustom tersedia untuk penugasan hanya di grup manajemen, langganan, atau grup sumber daya yang memerlukannya. Anda harus menggunakan setidaknya satu grup manajemen, langganan, atau grup sumber daya.

Misalnya, jika AssignableScopes diatur ke langganan, itu berarti bahwa peran kustom tersedia untuk penugasan pada cakupan langganan untuk langganan yang ditentukan, cakupan grup sumber daya untuk grup sumber daya apa pun dalam langganan, atau cakupan sumber daya untuk sumber daya apa pun dalam langganan.

Peran bawaan telah AssignableScopes disetel ke cakupan root ("/"). Cakupan root menunjukkan bahwa peran tersedia untuk penugasan di semua cakupan.

Contoh cakupan yang dapat ditetapkan secara valid meliputi:

Peran tersedia untuk penugasan Contoh
Satu langganan "/subscriptions/{subscriptionId1}"
Dua langganan "/subscriptions/{subscriptionId1}", "/subscriptions/{subscriptionId2}"
Grup sumber daya jaringan "/subscriptions/{subscriptionId1}/resourceGroups/Network"
Satu grup manajemen "/providers/Microsoft.Management/managementGroups/{groupId1}"
Grup manajemen dan langganan "/providers/Microsoft.Management/managementGroups/{groupId1}", "/subscriptions/{subscriptionId1}",
Semua cakupan (hanya berlaku untuk peran bawaan) "/"

Anda hanya dapat menentukan satu kelompok pengelolaan dalam AssignableScopes peran kustom.

Meskipun dimungkinkan untuk membuat peran kustom dengan instans sumber daya dalam AssignableScopes menggunakan baris perintah, tidak disarankan. Setiap penyewa mendukung maksimal 5.000 peran kustom. Menggunakan strategi ini berpotensi menghabiskan peran kustom Anda yang tersedia. Pada akhirnya, tingkat akses ditentukan oleh penetapan peran kustom (lingkup + izin peran + prinsip keamanan) dan bukan yang AssignableScopes tercantum dalam peran kustom. Jadi, buat peran kustom Anda dengan AssignableScopes grup manajemen, langganan, atau grup sumber daya, tetapi tetapkan peran kustom dengan cakupan sempit, seperti grup sumber daya atau sumber daya.

Untuk informasi selengkapnya tentang AssignableScopes peran kustom, lihat Peran kustom Azure.

Definisi peran administrator istimewa

Peran administrator istimewa adalah peran yang memberikan akses administrator istimewa, seperti kemampuan untuk mengelola sumber daya Azure atau menetapkan peran kepada pengguna lain. Jika peran bawaan atau kustom menyertakan salah satu tindakan berikut, peran tersebut dianggap istimewa. Untuk informasi selengkapnya, lihat Mencantumkan atau mengelola penetapan peran administrator istimewa.

Untai (karakter) tindakan Deskripsi
* Membuat dan mengelola sumber daya dari semua jenis.
*/delete Hapus sumber daya dari semua jenis.
*/write Tulis sumber daya dari semua jenis.
Microsoft.Authorization/denyAssignments/delete Menghapus tugas tolak pada cakupan yang ditentukan.
Microsoft.Authorization/denyAssignments/write Membuat tugas tolak pada cakupan yang ditentukan.
Microsoft.Authorization/roleAssignments/delete Menghapus penetapan peran pada cakupan yang ditentukan.
Microsoft.Authorization/roleAssignments/write Membuat penetapan peran pada cakupan yang ditentukan.
Microsoft.Authorization/roleDefinitions/delete Menghapus definisi peran kustom yang ditentukan.
Microsoft.Authorization/roleDefinitions/write Membuat atau memperbarui definisi peran kustom dengan izin tertentu dan cakupan yang dapat ditetapkan.

Langkah berikutnya