Share via


Service Fabric 클러스터의 Azure 리소스에 대한 Service Fabric 애플리케이션 액세스 권한 부여

애플리케이션에서 관리 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를 선택합니다.
  4. 페이지 위쪽에서 추가>역할 할당 추가를 차례로 선택하여 애플리케이션 ID에 대한 새 역할 할당을 추가합니다.
  5. 역할 아래의 드롭다운 목록에서 Storage 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에서 액세스 권한을 부여하는 단계는 위에서 나열한 단계와 비슷합니다. 차이점은 아래 이미지를 참조하세요.

Screenshot shows the Key Vault with Access policies selected.

다음 예제에서는 템플릿 배포를 사용하여 자격 증명 모음에 대한 액세스 권한을 부여하는 방법을 보여 줍니다. 템플릿의 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"
                        ]
                    }
            },
        ]
        }
    }

자세한 내용은 자격 증명 모음 - 액세스 정책 업데이트를 참조하세요.

다음 단계