Bicep Kullanarak Azure Privileged Identity Management Roles Atama
Azure Privileged Identity Management (PIM), Azure RBAC rollerine Tam Zamanında (JIT) erişim sağlamanıza olanak tanıyan bir araçtır. PIM’i kullanarak, bir kullanıcıyı veya grubu bir role uygun hale getirmek için bir rol ataması oluşturabilirsiniz. Bu atama, kullanıcının veya grubun role sahip olduğu anlamına gelmez, bunun yerine ihtiyaç duyduklarında rolü isteyebilecekleri anlamına gelir. Bu meydana geldiğinde, kullanıcı, rolün kısa bir süre için (genellikle saat, ancak tanımlanabilir) verilmesi için bir yükseltme isteğini tetikleyebilir. Daha sonra isteklerine onay isteme, bilet numarası isteme vb. Kurallar uygulanabilir ve ardından haklar verilir. PIM, kullanıcılara yönelik birçok kalıcı erişim hakkını kaldırmak için harika bir araçtır, ancak her kullanıcı için bir Azure AD P2 lisansı gerektirir.
PIM bir Azure AD özelliğidir, bu nedenle Bicep (veya ARM) kullanarak PIM atamaları oluşturmanın mümkün olmayacağını varsaydım, ancak mümkündür. PIM rolleri genellikle uygulamaya veya hizmete özgüdür, bu nedenle bunları Kod Olarak Altyapınızın bir parçası olarak oluşturabilmeniz oldukça yararlıdır.
Bir PIM ataması oluşturmak için Microsoft.Authorization/roleEligibilityScheduleRequests’i kullanacağız, bunun için tam API sn burada bulunabilir. Bu nesne, yalnızca bir atama oluşturmaktan daha fazlası için kullanılabilir, teoride bir atamayı etkinleştirmek, atamaları kaldırmak ve daha fazlası için kullanılabilir. Şimdi oluşturmaya ve güncellemeye bakacağız.
Bunu kullanabilmek için birkaç bilgiye ihtiyacımız olacak:
- Rolü atamak istediğiniz kullanıcı veya grubun nesne kimliği. Bu, AAD’deki kullanıcı veya gruba bakarak bulunabilir.
- Atamak istediğiniz rolün tam kimliği. Bu genellikle şu biçimdedir:
subscriptions/<subscription ID>/providers/Microsoft.Authorization/roleDefinitions/<role ID>
Bu bilgilerle ihtiyacımız olan Bicep kodunu oluşturabiliriz. Öncelikle rol için başlangıç tarihini doğru formatta almamız gerekiyor. Format 2022-04-17T14:40:08.067566 ama neyse ki Bicep utcNow işlevi bunu doğru formatta alıyor, böylece onu kullanabiliriz. Bu işlev yalnızca bir parametre için varsayılan değer olarak kullanılabilir, bu nedenle şablonumuzda bunu atadığımız ve gelecekte geçersiz kılmayacağımız bir parametre oluşturmamız gerekir.
param startTime string = utcNow()
Artık gerçek kaynağı oluşturabilmek için aşağıdaki kodu kullanabilirsiniz:
resource pimAssignment 'Microsoft.Authorization/roleEligibilityScheduleRequests@2022-04-01-preview' = {
name: guid(resourceGroup().id, 'contributor')
scope: resourceGroup()
properties: {
principalId: '<object ID of user or group>'
requestType: 'AdminUpdate'
roleDefinitionId: '<ID of role>'
scheduleInfo: {
expiration: {
duration: 'P365D'
type: 'AfterDuration'
}
startDateTime: startTime
}
}
}