Переход на детализированный доступ на основе ролей для конфигураций кластера

Мы вводим важные изменения для поддержки более детализированного ролевого доступа к конфиденциальной информации. В рамках этих изменений некоторые действия могут потребоваться к 3 сентября 2019 г., если вы используете одну из затронутых сущностей или сценариев.

Что меняется?

Ранее секреты можно было получить пользователями кластера с помощью API HDInsight, имеющими роли Owner, Contributor или Reader Azure, поскольку они были доступны каждому, у кого есть разрешение */read. Секреты определяются как значения, которые могут использоваться для получения уровня доступа выше, чем позволяет роль пользователя, например, учетные данные HTTP шлюза кластера, ключи учетных записей хранения и учетные данные баз данных.

Начиная с 3 сентября 2019 г. доступ к этим секретам потребует Microsoft.HDInsight/clusters/configurations/action разрешения, пользователь не может получить доступ к нему с ролью читателя. Роли, имеющие это разрешение, — это "Участник", "Владелец" и новая роль "Оператор кластера HDInsight".

Мы также вводим новую роль оператора кластера HDInsight, который может получать конфиденциальные данные без необходимости в административных разрешениях уровня участника или владельца. Подведение итогов.

Должность Ранее Идти вперед
Читатель — доступ на чтение, включая конфиденциальные данные. — доступ на чтение, за исключением секретов
Оператор кластера HDInsight
(Новая роль)
Не применимо — доступ на чтение и запись, включая секреты
Вкладчик — доступ на чтение и запись, включая секреты.
— Создание и управление всеми типами ресурсов Azure.
— Выполнение действий скрипта.
Нет изменений
Владелец — доступ на чтение и запись, включая секреты.
- Полный доступ ко всем ресурсам
— делегировать доступ другим пользователям.
— Выполнение действий скрипта.
Нет изменений

Сведения о том, как добавить назначение роли оператора кластера HDInsight пользователю, чтобы предоставить ему доступ на чтение и запись к секретам кластера, см. в разделе "Добавление назначения роли оператора кластера HDInsight" пользователю.

Узнайте, затронуты ли ваши сущности или сценарии.

Затронуты следующие сущности и сценарии:

API (Интерфейс программирования приложений)

Следующие API изменены или устарели.

  • GET /configurations/{configurationName} (удалена конфиденциальная информация)
    • Ранее использовался для получения отдельных типов конфигурации (включая секреты).
    • Начиная с 3 сентября 2019 г. вызов API теперь возвращает отдельные типы конфигурации с секретами, опущенными. Чтобы получить все конфигурации, включая секреты, используйте новый вызов POST /configurations. Чтобы получить только параметры шлюза, используйте новый вызов POST /getGatewaySettings.
  • GET /configurations (не рекомендуется)
    • Ранее использовался для получения всех конфигураций (включая секреты)
    • По состоянию на 3 сентября 2019 г. этот вызов API устарел и больше не поддерживается. Чтобы получить все конфигурации в будущем, используйте новый вызов POST /configurations. Чтобы получить конфигурации с пропущенными конфиденциальными параметрами, используйте вызов GET /configurations/{configurationName}.
  • POST /configurations/{configurationName} (не рекомендуется)
    • Ранее использовался для обновления учетных данных шлюза.
    • По состоянию на 3 сентября 2019 г. этот вызов API устарел и больше не поддерживается. Вместо этого используйте новые POST /updateGatewaySettings.

Добавлены следующие api замены:

  • POST /конфигурации
    • Используйте этот API для получения всех конфигураций, включая секреты.
  • POST /getGatewaySettings
    • Используйте этот API для получения параметров шлюза.
  • POST /updateGatewaySettings
    • Используйте этот API для обновления параметров шлюза (имя пользователя и/или пароль).

Средства Azure HDInsight для Visual Studio Code

Если вы используете версию 1.1.1 или ниже, обновите последнюю версию средств Azure HDInsight для Visual Studio Code , чтобы избежать прерываний.

Набор средств Azure для IntelliJ

Если вы используете версию 3.20.0 или ниже, обновите до новейшей версии подключаемого модуля Azure Toolkit для IntelliJ, чтобы избежать прерываний.

Средства Azure Data Lake и Stream Analytics для Visual Studio

Обновление до версии 2.3.9000.1 или более поздней версии средств Azure Data Lake и Stream Analytics для Visual Studio , чтобы избежать прерываний. Для получения справки по обновлению см. нашу документацию, Обновление средств Data Lake для Visual Studio.

Набор средств Azure для Eclipse

Если вы используете версию 3.15.0 или ниже, обновите до последней версии набора средств Azure для Eclipse , чтобы избежать прерываний.

Пакет SDK для .NET

Версии 1.x и 2.x

Обновление до версии 2.1.0 пакета SDK HDInsight для .NET. Минимальные изменения кода могут потребоваться, если вы используете метод, затронутый этими изменениями:

  • ClusterOperationsExtensions.GetClusterConfigurations больше не возвращает конфиденциальные параметры , такие как ключи хранилища (core-site) или учетные данные HTTP (шлюз).

    • Чтобы получить все конфигурации, включая конфиденциальные параметры, используйте ClusterOperationsExtensions.ListConfigurations в дальнейшем. Пользователи с ролью "Читатель" не могут использовать этот метод. Он позволяет детально контролировать доступ пользователей к конфиденциальной информации для кластера.
    • Чтобы получить только учетные данные шлюза HTTP, используйте ClusterOperationsExtensions.GetGatewaySettings.
  • ClusterOperationsExtensions.GetConnectivitySettings не рекомендуется и заменяется ClusterOperationsExtensions.GetGatewaySettings.

  • ClusterOperationsExtensions.ConfigureHttpSettings не рекомендуется и заменяется ClusterOperationsExtensions.UpdateGatewaySettings.

  • ConfigurationsOperationsExtensions.EnableHttp и DisableHttp не рекомендуется. HTTP всегда включен, поэтому эти методы больше не нужны.

Версии 3.x и вверх

Обновление до версии 5.0.0 или более поздней версии пакета SDK HDInsight для .NET. Минимальные изменения кода могут потребоваться, если вы используете метод, затронутый этими изменениями:

Пакет SDK для Python

Обновление до версии 1.0.0 или более поздней версии пакета SDK HDInsight для Python. Минимальные изменения кода могут потребоваться, если вы используете метод, затронутый этими изменениями:

  • ConfigurationsOperations.get больше не возвращает конфиденциальные параметры , такие как ключи хранилища (core-site) или учетные данные HTTP (шлюз).
    • Чтобы получить все конфигурации, включая конфиденциальные параметры, используйте ConfigurationsOperations.list в дальнейшем.  Пользователи с ролью "Читатель" не могут использовать этот метод. Он позволяет детально контролировать доступ пользователей к конфиденциальной информации для кластера.
    • Чтобы получить только учетные данные шлюза HTTP, используйте ClusterOperations.get_gateway_settings.
  • ConfigurationsOperations.update не рекомендуется и заменяется ClusterOperations.update_gateway_settings.

Пакет SDK для Java

Обновление до версии 1.0.0 или более поздней версии пакета SDK HDInsight для Java. Минимальные изменения кода могут потребоваться, если вы используете метод, затронутый этими изменениями:

  • ConfigurationsInner.get больше не возвращает конфиденциальные параметры , такие как ключи хранилища (core-site) или учетные данные HTTP (шлюз).
  • ConfigurationsInner.update не рекомендуется к использованию.

Пакет SDK для Go

Обновление до версии 27.1.0 или более поздней версии пакета SDK HDInsight для Go. Минимальные изменения кода могут потребоваться, если вы используете метод, затронутый этими изменениями:

  • ConfigurationsClient.get больше не возвращает конфиденциальные параметры , такие как ключи хранилища (core-site) или учетные данные HTTP (шлюз).
    • Чтобы получить все конфигурации, включая конфиденциальные параметры, используйте ConfigurationsClient.list в дальнейшем. Пользователи с ролью "Читатель" не могут использовать этот метод. Он позволяет детально контролировать доступ пользователей к конфиденциальной информации для кластера.
    • Чтобы получить только учетные данные шлюза HTTP, используйте ClustersClient.get_gateway_settings.
  • ConfigurationsClient.update не рекомендуется и заменяется ClustersClient.update_gateway_settings.

Az.HDInsight PowerShell

Обновите до Az PowerShell версии 2.0.0 или более поздней, чтобы избежать прерываний. Минимальные изменения кода могут потребоваться, если вы используете метод, затронутый этими изменениями.

  • Grant-AzHDInsightHttpServicesAccess устарел и заменен новым Set-AzHDInsightGatewayCredential командлетом.
  • Get-AzHDInsightJobOutput обновлено для поддержки детального доступа на основе ролей к ключу хранилища.
    • Пользователи с ролями Оператор, Участник или Владелец кластера HDInsight не затрагиваются.
    • Пользователям с ролью только для чтения необходимо указать параметр DefaultStorageAccountKey явно.
  • Revoke-AzHDInsightHttpServicesAccess не рекомендуется к использованию. HTTP всегда включен, поэтому этот командлет больше не нужен. См. руководство по миграции HDInsight для получения подробностей.

Добавление назначения роли оператора кластера HDInsight пользователю

Пользователь с ролью владельца может назначить роль оператора кластера HDInsight пользователям, которым требуется доступ на чтение и запись к конфиденциальным значениям конфигурации кластера HDInsight (например, учетным данным шлюза кластера и ключам учетной записи хранения).

Использование Azure CLI

Самый простой способ добавить это назначение ролей — использовать az role assignment create команду в Azure CLI.

Примечание.

Эта команда должна выполняться пользователем с ролью владельца, так как только они могут предоставить эти разрешения. Имя --assignee субъекта-службы или адреса электронной почты пользователя, которому требуется назначить роль оператора кластера HDInsight. Если вы получаете ошибку из-за недостатка прав доступа, см. часто задаваемые вопросы.

Предоставление роли на уровне ресурса (кластера)

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 для добавления назначения роли оператора кластера HDInsight пользователю. См. документацию по назначению ролей Azure с помощью портала Azure.

Вопросы и ответы

Почему я вижу ответ 403 (запрещено) после обновления запросов API и /или средства?

Конфигурации кластеров теперь защищены подробным контролем доступа на основе ролей и требуют разрешения Microsoft.HDInsight/clusters/configurations/* для доступа к ним. Чтобы получить это разрешение, назначьте роль оператора кластера HDInsight, участника или владельца пользователю или служебному принципалу, которому требуется доступ к конфигурациям.

Почему при выполнении команды Azure CLI отображается "Недостаточно привилегий для выполнения операции", чтобы назначить роль оператора кластера HDInsight другому пользователю или субъекту-службе?

Помимо роли владельца, пользователь или служебный принципал, выполняющий команду, должен иметь достаточные разрешения Microsoft Entra для поиска идентификаторов объектов назначаемого лица. Это сообщение указывает на недостаточно разрешений Microsoft Entra. Попробуйте заменить аргумент -–assignee на –assignee-object-id и указать ID объекта адресата в качестве параметра вместо имени (или идентификатор субъекта в случае управляемой идентичности). Дополнительные сведения см. в разделе о необязательных параметрах в документации по созданию назначений ролей az.

Если он по-прежнему не работает, обратитесь к администратору Microsoft Entra, чтобы получить правильные разрешения.

Что произойдет, если я не принимаю никаких действий?

Начиная с 3 сентября 2019 г., вызовы GET /configurations и POST /configurations/gateway больше не возвращают никакой информации, а вызов GET /configurations/{configurationName} больше не возвращает конфиденциальные параметры, такие как ключи учетной записи хранения или пароль кластера. То же самое касается соответствующих методов SDK и командлетов PowerShell.

Если вы используете более старую версию одного из инструментов для Visual Studio, VS Code, IntelliJ или Eclipse, он больше не работает до обновления.

Дополнительные сведения см. в соответствующем разделе этого документа для вашего сценария.