Поделиться через


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

Мы вносим некоторые важные изменения для поддержки более детализированного доступа на основе ролей к конфиденциальной информации. В рамках этих изменений некоторые действия могут потребоваться к 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 <[email protected]> --scope /subscriptions/<SubscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.HDInsight/clusters/<ClusterName>

Предоставление роли на уровне группы ресурсов

az role assignment create --role "HDInsight Cluster Operator" --assignee [email protected] -g <ResourceGroupName>

Назначить роль на уровне подписки

az role assignment create --role "HDInsight Cluster Operator" --assignee [email protected]

Использование портала 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, он больше не будет работать до тех пор, пока вы не обновите его.

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