클러스터 구성에 대한 세밀한 역할 기반 액세스로 마이그레이션

중요한 정보를 얻을 수 있도록 보다 세분화된 역할 기반 액세스를 지원하기 위해 몇 가지 중요한 변경 사항이 도입되었습니다. 이러한 변경 사항의 일부로 영향을 받는 엔터티/시나리오 중 하나를 사용하는 경우 2019년 9월 3일부터 일부 작업이 필요할 수 있습니다.

무엇이 변경되나요?

이전에는 비밀을 */read 권한이 있는 사람이면 누구나 사용할 수 있었기 때문에 소유자, 기여자 또는 읽기 권한자 Azure 역할을 가지고 있는 클러스터 사용자가 HDInsight API를 통해 비밀을 얻을 수 있었습니다. 비밀은 사용자의 역할에서 허용해야 하는 것보다 높은 수준의 액세스를 얻는 데 사용할 수 있는 값으로 정의됩니다. 여기에는 클러스터 게이트웨이 HTTP 자격 증명, 스토리지 계정 키, 데이터베이스 자격 증명 등의 값이 포함됩니다.

2019년 9월 3일부터 이러한 비밀에 액세스하려면 Microsoft.HDInsight/clusters/configurations/action 권한이 필요하며 사용자는 읽기 권한자 역할로 액세스할 수 없습니다. 이 권한이 있는 역할은 기여자, 소유자 및 새 HDInsight 클러스터 운영자 역할입니다.

또한 기여자 또는 소유자의 관리 권한을 부여하지 않고도 비밀을 검색할 수 있는 새 HDInsight 클러스터 운영자 역할을 도입하고 있습니다. 요약:

역할 이전 앞으로 이동
판독기 - 비밀 포함 읽기 권한. - 비밀 제외 읽기 권한
HDInsight 클러스터 운영자
(새 역할)
해당 없음 - 비밀 포함 읽기/쓰기 권한
참가자 - 비밀 포함 읽기/쓰기 권한.
- 모든 종류의 Azure 리소스를 만들고 관리.
- 스크립트 작업 실행.
변경 내용 없음
담당자 - 비밀 포함 읽기/쓰기 권한.
- 모든 리소스에 대한 전체 액세스 권한.
- 다른 사람에게 액세스 권한을 위임 가능.
- 스크립트 작업 실행.
변경 내용 없음

사용자에게 클러스터 암호에 대한 읽기/쓰기 액세스 권한을 부여하는 HDInsight 클러스터 운영자 역할 할당을 추가하는 방법에 대한 자세한 내용은 아래 섹션에서 사용자에게 Hdinsight 클러스터 운영자 역할 할당 추가를 참조하세요.

나도 변경의 영향을 받나요?

영향을 받는 엔터티 및 시나리오는 다음과 같습니다.

API

다음 API는 변경되거나 사용되지 않습니다.

  • GET /configurations/{configurationName}(중요한 정보 제거)
    • 이전에는 개별 구성 유형(암호 포함)을 가져오는 데 사용되었습니다.
    • 2019년 9월 3일부터 이 API 호출은 암호가 생략된 개별 구성 유형을 반환합니다. 비밀을 비롯한 모든 구성을 얻으려면 새 POST /configurations 호출을 사용합니다. 게이트웨이 설정만 가져오려면 새 POST /getGatewaySettings 호출을 사용합니다.
  • GET /configurations(사용되지 않음)
    • 이전에 모든 구성(암호 포함)을 가져오는 데 사용
    • 2019년 9월 3일부터 이 API 호출은 사용되지 않으며 더 이상 지원되지 않습니다. 앞으로 진행되는 구성을 가져오려면 새 POST /configurations 호출을 사용합니다. 중요한 매개 변수가 생략된 구성을 얻으려면 GET /configurations/{configurationName} 호출을 사용합니다.
  • POST /configurations/{configurationName}(사용되지 않음)
    • 이전에 게이트웨이 자격 증명을 업데이트하는 데 사용되었습니다.
    • 2019년 9월 3일부터 이 API 호출은 사용되지 않으며 더 이상 지원되지 않습니다. 대신 새 POST /updateGatewaySettings를 사용합니다.

다음과 같은 대체 API가 추가되었습니다.

Azure HDInsight Tools for Visual Studio Code

버전 1.1.1 이하를 사용하는 경우 중단을 방지하려면 최신 버전의 Azure HDInsight Tools for Visual Studio Code로 업데이트하세요.

Azure Toolkit for IntelliJ

버전 3.20.0를 사용하는 경우 중단을 방지하려면 최신 버전의 Azure Toolkit for IntelliJ 플러그 인으로 업데이트합니다.

Microsoft Azure Data Lake 및 Stream Analytics Tools for Visual Studio

중단을 방지하기 위해 2.3.9000.1 이상의 Azure Data Lake 및 Stream Analytics Tools for Visual Studio로 업데이트합니다. 업데이트에 대한 도움말은 Data Lake Tools for Visual Studio 업데이트설명서를 참조하세요.

Eclipse용 Azure 도구 키트

버전 3.15.0 이하를 사용하는 경우 중단을 방지하기 위해 최신 버전의 Azure Toolkit for Eclipse로 업데이트합니다.

.NET용 SDK

버전 1.x 및 2.x

.NET용 HDInsight SDK의 2.1.0 버전으로 업데이트. 이러한 변경의 영향을 받는 메서드를 사용하는 경우 최소한의 코드를 수정해야 할 수 있습니다.

  • ClusterOperationsExtensions.GetClusterConfigurations더 이상 스토리지 키(핵심 사이트) 또는 HTTP 자격 증명(게이트웨이)과 같은 중요한 매개 변수를 반환하지 않습니다.

    • 중요한 매개 변수를 포함한 모든 구성을 검색하려면 앞으로 ClusterOperationsExtensions.ListConfigurations를 사용합니다. '읽기 권한자' 역할이 있는 사용자는 이 메서드를 사용할 수 없습니다. 이렇게 하면 클러스터에 대한 중요한 정보에 액세스할 수 있는 사용자를 세부적으로 제어할 수 있습니다.
    • HTTP 게이트웨이 자격 증명만 검색하려면 ClusterOperationsExtensions.GetGatewaySettings를 사용합니다.
  • ClusterOperationsExtensions.GetConnectivitySettings는 이제 사용되지 않으며 ClusterOperationsExtensions.GetGatewaySettings로 대체되었습니다.

  • ClusterOperationsExtensions.ConfigureHttpSettings는 이제 사용되지 않으며 ClusterOperationsExtensions.UpdateGatewaySettings로 대체되었습니다.

  • ConfigurationsOperationsExtensions.EnableHttpDisableHttp는 이제 사용되지 않습니다. 이제 HTTP는 항상 사용하도록 설정되므로 이러한 메서드는 더 이상 필요하지 않습니다.

버전 3.x 이상

.NET용 HDInsight SDK의 5.0.0 버전 이상으로 업데이트합니다. 이러한 변경의 영향을 받는 메서드를 사용하는 경우 최소한의 코드를 수정해야 할 수 있습니다.

Python용 SDK

Python용 HDInsight SDK의 버전 1.0.0 이상으로 업데이트합니다. 이러한 변경의 영향을 받는 메서드를 사용하는 경우 최소한의 코드를 수정해야 할 수 있습니다.

Java용 SDK

Java용 HDInsight SDK의 1.0.0 버전 이상으로 업데이트합니다. 이러한 변경의 영향을 받는 메서드를 사용하는 경우 최소한의 코드를 수정해야 할 수 있습니다.

  • ConfigurationsInner.get더 이상 스토리지 키(핵심 사이트) 또는 HTTP 자격 증명(게이트웨이)과 같은 중요한 매개 변수를 반환하지 않습니다.
  • ConfigurationsInner.update는 이제 사용되지 않습니다.

Go용 SDK

Go용 HDInsight SDK 버전 27.1.0 이상으로 업데이트합니다. 이러한 변경의 영향을 받는 메서드를 사용하는 경우 최소한의 코드를 수정해야 할 수 있습니다.

  • ConfigurationsClient.get더 이상 스토리지 키(핵심 사이트) 또는 HTTP 자격 증명(게이트웨이)과 같은 중요한 매개 변수를 반환하지 않습니다.
    • 중요한 매개 변수를 포함한 모든 구성을 검색하려면 앞으로 ConfigurationsClient.list를 사용합니다. '읽기 권한자' 역할이 있는 사용자는 이 메서드를 사용할 수 없습니다. 이렇게 하면 클러스터에 대한 중요한 정보에 액세스할 수 있는 사용자를 세부적으로 제어할 수 있습니다.
    • HTTP 게이트웨이 자격 증명만 검색하려면 ClustersClient.get_gateway_settings를 사용합니다.
  • ConfigurationsClient.update는 이제 사용되지 않으며 ClustersClient.update_gateway_settings로 대체되었습니다.

Azure HDInsight PowerShell

중단을 방지하려면 Az PowerShell version 2.0.0 이상으로 업데이트합니다. 이러한 변경의 영향을 받는 메서드를 사용하는 경우 최소한의 코드를 수정해야 할 수 있습니다.

  • Grant-AzHDInsightHttpServicesAccess는 이제 사용되지 않으며 새로운 Set-AzHDInsightGatewayCredential cmdlet으로 대체되었습니다.
  • 스토리지 키에 대한 세분화된 역할 기반 액세스를 지원하도록 Get-AzHDInsightJobOutput을 업데이트했습니다.
    • HDInsight 클러스터 운영자, 기여자 또는 소유자 역할이 있는 사용자는 영향을 받지 않습니다.
    • 읽기 권한자 역할만 있는 사용자는 DefaultStorageAccountKey 매개 변수를 명시적으로 지정해야 합니다.
  • Revoke-AzHDInsightHttpServicesAccess는 이제 사용되지 않습니다. 이제 HTTP는 항상 사용하도록 설정되므로 이 cmdlet은 더 이상 필요하지 않습니다. 자세한 내용은 az.HDInsight 마이그레이션 가이드를 참조하세요.

사용자에게 HDInsight 클러스터 운영자 역할 할당 추가

소유자 역할을 가진 사용자는 중요한 HDInsight 클러스터 구성값(예: 클러스터 게이트웨이 자격 증명 및 스토리지 계정 키)에 대한 읽기/쓰기 권한을 부여하려는 사용자에게 HDInsight 클러스터 운영자 역할을 할당할 수 있습니다.

Azure CLI 사용

이 역할 할당을 추가하는 가장 간단한 방법은 Azure CLI의 az role assignment create 명령을 사용하는 것입니다.

참고 항목

소유자 역할을 가진 사용자만 권한을 부여할 수 있으므로 이러한 사용자만 명령을 실행해야 합니다. --assignee는 HDInsight 클러스터 운영자 역할을 할당하려는 사용자의 서비스 주체 또는 이메일 주소의 이름입니다. 권한 부족 오류가 표시되면 FAQ를 참조하세요.

리소스(클러스터) 수준에서 역할 부여

az role assignment create --role "HDInsight Cluster Operator" --assignee <user@domain.com> --scope /subscriptions/<SubscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.HDInsight/clusters/<ClusterName>

리소스 그룹 수준에서 역할 부여

az role assignment create --role "HDInsight Cluster Operator" --assignee user@domain.com -g <ResourceGroupName>

구독 수준에서 역할 부여

az role assignment create --role "HDInsight Cluster Operator" --assignee user@domain.com

Azure 포털 사용하기

또는 Azure Portal를 사용하여 사용자에게 HDInsight 클러스터 운영자 역할 할당을 추가할 수 있습니다. Azure Portal을 사용하여 Azure 역할 할당 문서를 참조하세요.

FAQ

API 요청 및/또는 도구를 업데이트한 후 403(사용할 수 없음) 응답이 표시되는 이유는 무엇인가요?

클러스터 구성은 이제 세분화된 역할 기반 액세스 제어를 넘어섰으며 액세스하려면 Microsoft.HDInsight/clusters/configurations/* 권한이 필요합니다. 이 권한을 얻으려면 구성에 액세스 하려는 사용자 또는 서비스 주체에게 HDInsight 클러스터 운영자, 기여자 또는 소유자 역할을 할당합니다.

Azure CLI 명령을 실행하여 다른 사용자나 서비스 주체에 HDInsight 클러스터 운영자 역할을 할당하는 경우 "권한이 부족하여 작업을 완료할 수 없습니다" 메시지가 표시되는 이유는 무엇인가요?

사용자나 서비스 주체가 이 명령을 실행하려면 소유자 역할을 보유하는 것 외에도 담당자의 개체 ID를 조회할 Microsoft Entra 권한이 있어야 합니다. 이 메시지는 Microsoft Entra 권한이 부족함을 나타냅니다. -–assignee인수를 –assignee-object-id로 바꾸고 담당자의 개체 ID를 이름 대신 매개 변수로 제공합니다(또는 관리 ID의 경우 보안 주체 ID). 자세한 정보는 az role assignment create 설명서의 선택적 매개 변수 섹션을 참조하세요.

그래도 작동하지 않는 경우 Microsoft Entra 관리자에게 문의하여 올바른 권한을 획득하세요.

조치를 취하지 않으면 어떻게 되나요?

2019년 9월 3일부터 GET /configurationsPOST /configurations/gateway 호출은 더 이상 정보를 반환하지 않으며 GET /configurations/{configurationName} 호출은 스토리지 계정 키 또는 클러스터 암호와 같이 중요한 매개 변수를 반환하지 않습니다. 해당 SDK 메서드 및 PowerShell cmdlet의 경우에도 마찬가지입니다.

언급된 Visual Studio, VSCode, IntelliJ 또는 Eclipse용 도구 중 하나의 이전 버전을 사용하는 경우 업데이트할 때까지 더 이상 작동하지 않습니다.

자세한 내용은 시나리오에 대한 이 문서의 해당 섹션을 참조하세요.