Yönetilen kimlikle Azure Yönetilen Uygulaması
Dekont
Azure Yönetilen Uygulamaları için yönetilen kimlik desteği şu anda önizleme aşamasındadır. Yönetilen kimliği kullanmak için lütfen 2018-09-01-preview API sürümünü kullanın.
Yönetilen bir uygulamayı yönetilen kimlik içerecek şekilde yapılandırmayı öğrenin. Yönetilen kimlik, müşterinin yönetilen uygulamaya mevcut kaynaklara erişim izni vermesi için kullanılabilir. Azure platformu kimliği yönetir ve gizli dizileri sağlamanızı veya döndürmenizi gerektirmez. Microsoft Entra Id'deki yönetilen kimlikler hakkında daha fazla bilgi için bkz . Azure kaynakları için yönetilen kimlikler.
Uygulamanız için iki tür kimlik verilebilir:
- Sistem tarafından atanan yönetilen kimlik uygulamanıza bağlıdır ve uygulamanız silinirse silinir. Bir uygulama yalnızca bir sistem tarafından atanan yönetilen kimliğe sahip olabilir.
- Kullanıcı tarafından atanan yönetilen kimlik, uygulamanıza atanabilen tek başına bir Azure kaynağıdır. Bir uygulamada kullanıcı tarafından atanan birden çok yönetilen kimlik olabilir.
Yönetilen kimliği kullanma
Yönetilen kimlik, yönetilen uygulamalar için birçok senaryoya olanak tanır. Çözülebilecek bazı yaygın senaryolar şunlardır:
- Mevcut Azure kaynaklarına bağlı yönetilen bir uygulama dağıtma. Mevcut bir ağ arabirimine bağlı yönetilen uygulama içinde bir Azure sanal makinesi (VM) dağıtma örneği verilmiştir.
- Yönetilen uygulama ve yayımcıya yönetilen kaynak grubu dışındaki Azure kaynaklarına erişim verme.
- Azure'da Etkinlik Günlüğü ve diğer hizmetler için yönetilen uygulamaların operasyonel kimliğini sağlama.
Yönetilen kimlik ekleme
Yönetilen kimlikle yönetilen uygulama oluşturmak için Azure kaynağında başka bir özelliğin ayarlanması gerekir. Aşağıdaki örnekte örnek kimlik özelliği gösterilmektedir:
{
"identity": {
"type": "SystemAssigned, UserAssigned",
"userAssignedIdentities": {
"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testRG/providers/Microsoft.ManagedIdentity/userassignedidentites/myuserassignedidentity": {}
}
}
}
ile identity
yönetilen uygulama oluşturmanın iki yaygın yolu vardır: createUiDefinition.json ve Azure Resource Manager şablonları. Basit tek oluşturma senaryolarında, daha zengin bir deneyim sağladığından yönetilen kimliği etkinleştirmek için createUiDefinition kullanılmalıdır. Ancak, otomatik veya birden çok yönetilen uygulama dağıtımı gerektiren gelişmiş veya karmaşık sistemlerle ilgilenirken şablonlar kullanılabilir.
createUiDefinition kullanma
Yönetilen bir uygulama, createUiDefinition.json aracılığıyla yönetilen kimlikle yapılandırılabilir. Çıkışlar bölümünde anahtarmanagedIdentity
, yönetilen uygulama şablonunun kimlik özelliğini geçersiz kılmak için kullanılabilir. Aşağıdaki örnek, yönetilen uygulamada sistem tarafından atanan yönetilen kimliği etkinleştirir. Tüketiciden giriş istemek için createUiDefinition öğeleri kullanılarak daha karmaşık kimlik nesneleri oluşturulabilir. Bu girişler, kullanıcı tarafından atanan yönetilen kimlikle yönetilen uygulamalar oluşturmak için kullanılabilir.
"outputs": {
"managedIdentity": { "Type": "SystemAssigned" }
}
Yönetilen kimlik için createUiDefinition ne zaman kullanılır?
Yönetilen uygulamalarda yönetilen kimliği etkinleştirmek için createUiDefinition'ın ne zaman kullanılacağına ilişkin bazı öneriler aşağıdadır.
- Yönetilen uygulama oluşturma işlemi Azure portalından veya Azure Market.
- Yönetilen kimlik karmaşık tüketici girişi gerektirir.
- Yönetilen kimlik, yönetilen uygulamanın oluşturulmasında gereklidir.
Yönetilen kimlik createUiDefinition denetimi
createUiDefinition.json yerleşik yönetilen kimlik denetimini destekler.
{
"$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
"handler": "Microsoft.Azure.CreateUIDef",
"version": "0.1.2-preview",
"parameters": {
"basics": [],
"steps": [
{
"name": "applicationSettings",
"label": "Application Settings",
"subLabel": {
"preValidation": "Configure your application settings",
"postValidation": "Done"
},
"bladeTitle": "Application Settings",
"elements": [
{
"name": "appName",
"type": "Microsoft.Common.TextBox",
"label": "Managed application Name",
"toolTip": "Managed application instance name",
"visible": true
},
{
"name": "appIdentity",
"type": "Microsoft.ManagedIdentity.IdentitySelector",
"label": "Managed Identity Configuration",
"toolTip": {
"systemAssignedIdentity": "Enable system assigned identity to grant the managed application access to additional existing resources.",
"userAssignedIdentity": "Add user assigned identities to grant the managed application access to additional existing resources."
},
"defaultValue": {
"systemAssignedIdentity": "Off"
},
"options": {
"hideSystemAssignedIdentity": false,
"hideUserAssignedIdentity": false,
"readOnlySystemAssignedIdentity": false
},
"visible": true
}
]
}
],
"outputs": {
"applicationResourceName": "[steps('applicationSettings').appName]",
"location": "[location()]",
"managedIdentity": "[steps('applicationSettings').appIdentity]"
}
}
}
Azure Resource Manager şablonlarını kullanma
Dekont
Market tarafından yönetilen uygulama şablonları, Azure portalı oluşturma deneyiminden geçen müşteriler için otomatik olarak oluşturulur.
Bu senaryolarda, managedIdentity
etkin kimlik için createUiDefinition üzerindeki çıkış anahtarı kullanılmalıdır.
Yönetilen kimlik, Azure Resource Manager şablonları aracılığıyla da etkinleştirilebilir. Aşağıdaki örnek, yönetilen uygulamada sistem tarafından atanan yönetilen kimliği etkinleştirir. Giriş sağlamak için Azure Resource Manager şablon parametreleri kullanılarak daha karmaşık kimlik nesneleri oluşturulabilir. Bu girişler, kullanıcı tarafından atanan yönetilen kimlikle yönetilen uygulamalar oluşturmak için kullanılabilir.
Yönetilen kimlik için Azure Resource Manager şablonları ne zaman kullanılır?
Yönetilen uygulamalarda yönetilen kimliği etkinleştirmek için Azure Resource Manager şablonlarının ne zaman kullanılacağına ilişkin bazı öneriler aşağıdadır.
- Yönetilen uygulamalar bir şablona göre program aracılığıyla dağıtılabilir.
- Yönetilen uygulamayı sağlamak için yönetilen kimlik için özel rol atamaları gerekir.
- Yönetilen uygulamanın Azure portalına ve Market oluşturma akışına ihtiyacı yoktur.
SystemAssigned şablonu
Sistem tarafından atanan yönetilen kimlikle yönetilen bir uygulama dağıtan temel bir Azure Resource Manager şablonu.
"resources": [
{
"type": "Microsoft.Solutions/applications",
"name": "[parameters('applicationName')]",
"apiVersion": "2018-09-01-preview",
"location": "[parameters('location')]",
"identity": {
"type": "SystemAssigned"
},
"properties": {
"ManagedResourceGroupId": "[parameters('managedByResourceGroupId')]",
"parameters": { }
}
}
]
UserAssigned şablonu
Kullanıcı tarafından atanan yönetilen kimlikle yönetilen bir uygulama dağıtan temel bir Azure Resource Manager şablonu.
"resources": [
{
"type": "Microsoft.ManagedIdentity/userAssignedIdentities",
"name": "[parameters('managedIdentityName')]",
"apiVersion": "2018-11-30",
"location": "[parameters('location')]"
},
{
"type": "Microsoft.Solutions/applications",
"name": "[parameters('applicationName')]",
"apiVersion": "2018-09-01-preview",
"location": "[parameters('location')]",
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"[resourceID('Microsoft.ManagedIdentity/userAssignedIdentities/',parameters('managedIdentityName'))]": {}
}
},
"properties": {
"ManagedResourceGroupId": "[parameters('managedByResourceGroupId')]",
"parameters": { }
}
}
]
Azure kaynaklarına erişim verme
Yönetilen uygulamaya bir kimlik verildikten sonra, rol ataması oluşturularak mevcut Azure kaynaklarına erişim verilebilir.
Bunu yapmak için, yönetilen uygulamanın veya kullanıcı tarafından atanan yönetilen kimliğin adını arayıp seçin ve ardından Erişim denetimi (IAM) öğesini seçin. Ayrıntılı adımlar için bkz. Azure portalı kullanarak Azure rolleri atama.
Mevcut Azure kaynaklarını bağlama
Dekont
Yönetilen uygulama dağıtılmadan önce kullanıcı tarafından atanan yönetilen kimlik yapılandırılmalıdır. Ayrıca, yönetilen uygulamaların bağlı kaynak dağıtımı yalnızca Market türü için desteklenir.
Yönetilen kimlik, dağıtımı sırasında mevcut kaynaklara erişim gerektiren yönetilen bir uygulamayı dağıtmak için de kullanılabilir. Müşteri yönetilen uygulamayı sağladığında, mainTemplate dağıtımına daha fazla yetkilendirme sağlamak için kullanıcı tarafından atanan yönetilen kimlikler eklenebilir.
Bağlantılı bir kaynakla createUiDefinition yazma
Yönetilen uygulamanın dağıtımını mevcut kaynaklara bağladığınızda, hem mevcut Azure kaynağı hem de ilgili kaynakta geçerli rol atamasına sahip kullanıcı tarafından atanan yönetilen kimlik sağlanmalıdır.
İki giriş gerektiren örnek bir createUiDefinition.json : ağ arabirimi kaynak kimliği ve kullanıcı tarafından atanan yönetilen kimlik kaynak kimliği.
{
"$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
"handler": "Microsoft.Azure.CreateUIDef",
"version": "0.1.2-preview",
"parameters": {
"basics": [
{}
],
"steps": [
{
"name": "managedApplicationSetting",
"label": "Managed Application Settings",
"subLabel": {
"preValidation": "Managed Application Settings",
"postValidation": "Done"
},
"bladeTitle": "Managed Application Settings",
"elements": [
{
"name": "networkInterfaceId",
"type": "Microsoft.Common.TextBox",
"label": "Network interface resource ID",
"defaultValue": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testRG/providers/Microsoft.Network/networkInterfaces/existingnetworkinterface",
"toolTip": "Must represent the identity as an Azure Resource Manager resource identifer format ex. /subscriptions/sub1/resourcegroups/myGroup/providers/Microsoft.Network/networkInterfaces/networkinterface1",
"visible": true
},
{
"name": "userAssignedId",
"type": "Microsoft.Common.TextBox",
"label": "User-assigned managed identity resource ID",
"defaultValue": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testRG/providers/Microsoft.ManagedIdentity/userassignedidentites/myuserassignedidentity",
"toolTip": "Must represent the identity as an Azure Resource Manager resource identifer format ex. /subscriptions/sub1/resourcegroups/myGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity1",
"visible": true
}
]
}
],
"outputs": {
"existingNetworkInterfaceId": "[steps('managedApplicationSetting').networkInterfaceId]",
"managedIdentity": "[parse(concat('{\"Type\":\"UserAssigned\",\"UserAssignedIdentities\":{',string(steps('managedApplicationSetting').userAssignedId),':{}}}'))]"
}
}
}
Bu createUiDefinition.json , iki alanı olan bir oluşturma kullanıcı deneyimi oluşturur. İlk alan, kullanıcının yönetilen uygulama dağıtımına bağlı kaynağın Azure kaynak kimliğini girmesini sağlar. İkincisi, bir tüketicinin bağlı Azure kaynağına erişimi olan kullanıcı tarafından atanan yönetilen kimlik Azure kaynak kimliğini girmesidir. Oluşturulan deneyim şöyle görünür:
MainTemplate'ı bağlantılı bir kaynakla yazma
CreateUiDefinition güncelleştirmesine ek olarak, ana şablonun geçirilen bağlı kaynak kimliğini kabul etmek için de güncelleştirilmesi gerekir. Ana şablon, yeni bir parametre eklenerek yeni çıkışı kabul etmek üzere güncelleştirilebilir. managedIdentity
Çıkış, oluşturulan yönetilen uygulama şablonundaki değeri geçersiz kılacağından, ana şablona geçirilmediğinden parametreler bölümüne dahil edilmemelidir.
Ağ profilini createUiDefinition.json tarafından sağlanan mevcut bir ağ arabirimine ayarlayan örnek bir ana şablon.
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"existingNetworkInterfaceId": { "type": "string" }
},
"variables": {
},
"resources": [
{
"apiVersion": "2016-04-30-preview",
"type": "Microsoft.Compute/virtualMachines",
"name": "myLinkedResourceVM",
"location": "[resourceGroup().location]",
"properties": {
…,
"networkProfile": {
"networkInterfaces": [
{
"id": "[parameters('existingNetworkInterfaceId')]"
}
]
}
}
}
]
}
Yönetilen uygulamayı bağlı bir kaynakla kullanma
Yönetilen uygulama paketi oluşturulduktan sonra yönetilen uygulama Azure portalı üzerinden kullanılabilir. Tüketilmeden önce birkaç önkoşul adımı vardır.
- Gerekli bağlantılı Azure kaynağının bir örneği oluşturulmalıdır.
- Kullanıcı tarafından atanan yönetilen kimlik oluşturulmalıdır ve bağlı kaynağa rol atamaları verilmelidir.
- Mevcut bağlı kaynak kimliği ve kullanıcı tarafından atanan yönetilen kimlik kimliği createUiDefinition'a sağlanır.
Yönetilen kimlik belirtecini erişme
Yönetilen uygulamanın belirtecini artık yayımcı kiracısından listTokens
api aracılığıyla erişilebilir. Örnek bir istek şöyle görünebilir:
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Solutions/applications/{applicationName}/listTokens?api-version=2018-09-01-preview HTTP/1.1
{
"authorizationAudience": "https://management.azure.com/",
"userAssignedIdentities": [
"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{userAssignedIdentityName}"
]
}
İstek Gövdesi Parametreleri:
Parametre | Zorunlu | Tanım |
---|---|---|
authorizationAudience |
No | Hedef kaynağın Uygulama Kimliği URI'si. Ayrıca verilen belirtecin aud (hedef kitle) talebidir. Varsayılan değer "https://management.azure.com/" |
userAssignedIdentities |
No | Belirteci almak için kullanıcı tarafından atanan yönetilen kimliklerin listesi. Belirtilmezse, listTokens sistem tarafından atanan yönetilen kimlik için belirteci döndürür. |
Örnek yanıt şöyle görünebilir:
HTTP/1.1 200 OK
Content-Type: application/json
{
"value": [
{
"access_token": "eyJ0eXAi…",
"expires_in": "2…",
"expires_on": "1557…",
"not_before": "1557…",
"authorizationAudience": "https://management.azure.com/",
"resourceId": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Solutions/applications/{applicationName}",
"token_type": "Bearer"
}
]
}
Yanıt, özelliği altında value
bir belirteç dizisi içerir:
Parametre | Tanım |
---|---|
access_token |
İstenen erişim belirteci. |
expires_in |
Erişim belirtecinin geçerli olduğu saniye sayısı. |
expires_on |
Erişim belirtecinin süresi dolduğunda zaman aralığı. Bu değer, dönemdeki saniye sayısı olarak temsil edilir. |
not_before |
Erişim belirtecinin etkin olduğu zaman aralığı. Bu değer, dönemdeki saniye sayısı olarak temsil edilir. |
authorizationAudience |
aud Erişim belirtecinin istenildiği (hedef kitle). Bu değer, istekte sağlanan değerle listTokens aynıdır. |
resourceId |
Verilen belirtecin Azure kaynak kimliği. Bu değer, yönetilen uygulama kimliği veya kullanıcı tarafından atanan yönetilen kimlik kimliğidir. |
token_type |
Belirtecin türü. |