Udzielanie tożsamości zarządzanej aplikacji usługi Service Fabric dostępu do zasobów platformy Azure

Zanim aplikacja będzie mogła używać swojej tożsamości zarządzanej do uzyskiwania dostępu do innych zasobów, należy przyznać tej tożsamości dostęp do tej tożsamości w chronionym zasobie platformy Azure. Udzielanie uprawnień jest zazwyczaj akcją zarządzania na "płaszczyźnie sterowania" usługi platformy Azure będącej właścicielem chronionego zasobu kierowanego za pośrednictwem usługi Azure Resource Manager, która wymusza wszelkie odpowiednie sprawdzanie dostępu oparte na rolach.

Dokładna sekwencja kroków będzie zależeć od typu używanego zasobu platformy Azure, a także języka/klienta używanego do udzielania uprawnień. W pozostałej części artykułu przyjęto założenie, że tożsamość przypisana przez użytkownika jest przypisana do aplikacji i zawiera kilka typowych przykładów dla wygody użytkownika, ale nie jest to wyczerpujące odwołanie do tego tematu; Zapoznaj się z dokumentacją odpowiednich usług platformy Azure, aby uzyskać aktualne instrukcje dotyczące udzielania uprawnień.

Udzielanie dostępu do usługi Azure Storage

Tożsamość zarządzana aplikacji usługi Service Fabric (przypisana przez użytkownika w tym przypadku) umożliwia pobranie danych z obiektu blob usługi Azure Storage. Udziel tożsamości wymaganych uprawnień dla konta magazynu, przypisując rolę Czytelnik danych obiektu blob usługi Storage do tożsamości zarządzanej aplikacji w zakresie grupy zasobów.

Aby uzyskać szczegółowe instrukcje, zobacz Przypisywanie ról platformy Azure przy użyciu witryny Azure Portal.

Udzielanie dostępu do usługi Azure Key Vault

Podobnie w przypadku uzyskiwania dostępu do magazynu można użyć tożsamości zarządzanej aplikacji usługi Service Fabric w celu uzyskania dostępu do magazynu kluczy platformy Azure. Kroki udzielania dostępu w witrynie Azure Portal są podobne do tych wymienionych powyżej i nie zostaną powtórzone w tym miejscu. Zapoznaj się z poniższym obrazem, aby uzyskać różnice.

Key Vault access policy

Poniższy przykład ilustruje udzielanie dostępu do magazynu za pośrednictwem wdrożenia szablonu; dodaj poniższe fragmenty kodu jako kolejny wpis w elememencie resources szablonu. W przykładzie pokazano przyznanie dostępu dla typów tożsamości przypisanych przez użytkownika i przypisanych przez system — wybierz odpowiednie.

    # 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"]
                    }
                }
            ]
        }
    },

W przypadku tożsamości zarządzanych przypisanych przez system:

    # 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"
                        ]
                    }
            },
        ]
        }
    }

Aby uzyskać więcej informacji, zobacz Magazyny — aktualizowanie zasad dostępu.

Następne kroki