次の方法で共有


Service Fabric アプリケーションに Service Fabric クラスター上の Azure リソースへのアクセス権を付与する

アプリケーションがマネージド ID を使用して他のリソースにアクセスするためには、アクセスする保護された Azure リソースに対するアクセス許可をその ID に付与します。 通常、アクセス許可の付与は、Azure Resource Manager 経由でルーティングされる保護されたリソースを所有する Azure サービスの "コントロール プレーン" に対する管理アクションです。 このサービスにより、適用可能なすべてのロールベースのアクセス チェックが実施されます。

正確な一連の手順は、アクセスする Azure リソースの種類と、アクセス許可を付与するために使用される言語/クライアントによって異なります。 この記事では、ユーザー割り当て ID がアプリケーションに割り当てられていることを想定し、いくつかの例を示します。 アクセス許可の付与に関する最新の手順については、それぞれの Azure サービスのドキュメントを参照してください。

Azure Storage へのアクセス権を付与する

Service Fabric アプリケーションのマネージド ID (この場合はユーザー割り当て) を使用して、Azure Storage BLOB からデータを取得できます。 次の手順を使用して、Azure portal で必要なアクセス許可を ID に付与します。

  1. ストレージ アカウントに移動します。
  2. 左側のパネルの [アクセス制御 (IAM)] リンクを選択します。
  3. (省略可能) 既存のアクセスを確認する: [検索] コントロールで、システム割り当てマネージド ID またはユーザー割り当てマネージド ID を選択します。 その後の結果一覧から適切な ID を選択します。
  4. ページの上部にある [追加]>[ロール割り当ての追加] をクリックして、アプリケーションの ID 用に新しいロールの割り当てを追加します。
  5. [ロール] で、ドロップダウンから [ストレージ BLOB データ閲覧者] を選択します。
  6. 次のドロップダウン リストの [アクセスの割り当て先] で、[ユーザー割り当てマネージド ID] を選択します。
  7. 次に、適切なサブスクリプションが [サブスクリプション] ドロップダウン リストに表示されていることを確認してから、[リソース グループ][すべてのリソース グループ] に設定します。
  8. [選択] で、Service Fabric アプリケーションに対応する UAI を選択し、[保存] を選択します。

システム割り当ての Service Fabric マネージド ID のサポートには、Azure portal での統合は含まれません。 アプリケーションでシステム割り当て ID を使用する場合は、アプリケーションの ID のクライアント ID を見つけて、上記の手順を繰り返しますが、[検索] コントロールで [Microsoft Entra のユーザー、グループ、サービス プリンシパル] オプションを選択します。

Azure Key Vault へのアクセスを付与する

ストレージへのアクセスと同様に、Service Fabric アプリケーションのマネージド ID を使用して Azure Key Vault にアクセスできます。 Azure portal でアクセス権を付与する手順は、上記の手順と同様です。

次の例は、テンプレートのデプロイを使用してコンテナーへのアクセス権を付与する方法を示しています。 テンプレートの resources 要素の下に、次のスニペットを別のエントリとして追加します。 このサンプルでは、ユーザーが割り当てた ID の種類とシステムによって割り当てられた ID の種類の両方に付与されるアクセス権を示します。 適切なほうを選択してください。

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

システムによって割り当てられたマネージド ID の場合:

    # under 'variables':
  "variables": {
        "sfAppSystemAssignedIdentityResourceId": "[concat(resourceId('Microsoft.ServiceFabric/managedClusters/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"
                        ]
                    }
            },
        ]
        }
    }

詳細については、「コンテナー - アクセス ポリシーの更新」を参照してください。

次の手順