Concessione dell'accesso all'identità gestita di un'applicazione di Service Fabric alle risorse di Azure

Prima che l'applicazione possa usare l'identità gestita per accedere ad altre risorse, è necessario concedere autorizzazioni a tale identità per la risorsa di Azure protetta a cui si accede. La concessione delle autorizzazioni è in genere un'azione di gestione sul "piano di controllo" del servizio di Azure proprietario della risorsa protetta instradata tramite Azure Resource Manager, che applichererà qualsiasi controllo degli accessi in base al ruolo applicabile.

La sequenza esatta di passaggi dipenderà quindi dal tipo di risorsa di Azure a cui si accede, nonché dalla lingua o dal client usato per concedere le autorizzazioni. Il resto dell'articolo presuppone un'identità assegnata dall'utente assegnata all'applicazione e include diversi esempi tipici per praticità, ma non è in alcun modo un riferimento esaustivo per questo argomento; Consultare la documentazione dei rispettivi servizi di Azure per istruzioni aggiornate sulla concessione delle autorizzazioni.

Concessione dell'accesso a Archiviazione di Azure

È possibile usare l'identità gestita dell'applicazione di Service Fabric (assegnata dall'utente in questo caso) per recuperare i dati da un BLOB di archiviazione di Azure. Concedere all'identità le autorizzazioni necessarie per l'account di archiviazione assegnando il ruolo lettore di dati BLOB Archiviazione all'identità gestita dell'applicazione nell'ambito del gruppo di risorse.

Per la procedura dettagliata, vedere Assegnare ruoli di Azure usando il portale di Azure.

Concessione dell'accesso ad Azure Key Vault

Analogamente all'accesso all'archiviazione, è possibile sfruttare l'identità gestita di un'applicazione di Service Fabric per accedere a un insieme di credenziali delle chiavi di Azure. I passaggi per concedere l'accesso nel portale di Azure sono simili a quelli elencati in precedenza e non verranno ripetuti qui. Per le differenze, vedere l'immagine seguente.

Key Vault access policy

L'esempio seguente illustra la concessione dell'accesso a un insieme di credenziali tramite una distribuzione di modelli; aggiungere i frammenti di codice seguenti come un'altra voce sotto l'elemento resources del modello. Nell'esempio viene illustrata la concessione dell'accesso rispettivamente per i tipi di identità assegnati dall'utente e per i tipi di identità assegnati dal sistema, scegliere quello applicabile.

    # under 'variables':
  "variables": {
        "userAssignedIdentityResourceId" : "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities/', parameters('userAssignedIdentityName'))]",
    }
    # under 'resources':
    {
        "type": "Microsoft.KeyVault/vaults/accessPolicies",
        "name": "[concat(parameters('keyVaultName'), '/add')]",
        "apiVersion": "2018-02-14",
        "properties": {
            "accessPolicies": [
                {
                    "tenantId": "[reference(variables('userAssignedIdentityResourceId'), '2018-11-30').tenantId]",
                    "objectId": "[reference(variables('userAssignedIdentityResourceId'), '2018-11-30').principalId]",
                    "dependsOn": [
                        "[variables('userAssignedIdentityResourceId')]"
                    ],
                    "permissions": {
                        "keys":         ["get", "list"],
                        "secrets":      ["get", "list"],
                        "certificates": ["get", "list"]
                    }
                }
            ]
        }
    },

E per le identità gestite assegnate dal sistema:

    # under 'variables':
  "variables": {
        "sfAppSystemAssignedIdentityResourceId": "[concat(resourceId('Microsoft.ServiceFabric/clusters/applications/', parameters('clusterName'), parameters('applicationName')), '/providers/Microsoft.ManagedIdentity/Identities/default')]"
    }
    # under 'resources':
    {
        "type": "Microsoft.KeyVault/vaults/accessPolicies",
        "name": "[concat(parameters('keyVaultName'), '/add')]",
        "apiVersion": "2018-02-14",
        "properties": {
            "accessPolicies": [
            {
                    "name": "[concat(parameters('clusterName'), '/', parameters('applicationName'))]",
                    "tenantId": "[reference(variables('sfAppSystemAssignedIdentityResourceId'), '2018-11-30').tenantId]",
                    "objectId": "[reference(variables('sfAppSystemAssignedIdentityResourceId'), '2018-11-30').principalId]",
                    "dependsOn": [
                        "[variables('sfAppSystemAssignedIdentityResourceId')]"
                    ],
                    "permissions": {
                        "secrets": [
                            "get",
                            "list"
                        ],
                        "certificates": 
                        [
                            "get", 
                            "list"
                        ]
                    }
            },
        ]
        }
    }

Per altri dettagli, vedere Insiemi di credenziali - Aggiornare i criteri di accesso.

Passaggi successivi