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

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

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

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

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

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

Роль Ранее Переход вперед
Читатель – Доступ на чтение, включая секреты – Доступ на чтение, исключая секреты
Оператор кластера HDInsight
(Новая роль)
Неприменимо – Доступ на чтение и запись, включая секреты
Участник – Доступ на чтение и запись, включая секреты
– Создание ресурсов Azure любых типов и управление ими
– Выполнение действий сценариев
Без изменений
Ответственное лицо – Доступ на чтение и запись, включая секреты
– Полный доступ ко всем ресурсам
– Делегирование прав доступа другим пользователям
– Выполнение действий сценариев
Без изменений

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

Затронут ли меня эти изменения?

Изменения затронут следующие объекты и сценарии.

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 /configurations
    • Используйте этот API для получения всех конфигураций, включая секреты.
  • POST /getGatewaySettings
    • Используйте этот 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 для Visual Studio

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

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

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

Пакет SDK для .NET

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

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

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

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

  • ClusterOperationsExtensions.ConfigureHttpSettings теперь является нерекомендуемым и заменен на ClusterOperationsExtensions.UpdateGatewaySettings.

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

Версия 3.x и более поздние версии

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

  • ConfigurationOperationsExtensions.Get больше не будет возвращать конфиденциальные параметры, такие как ключи к хранилищу данных (основной сайт) или учетные данные HTTP (шлюз).
    • Для получения всех конфигураций, включая конфиденциальные параметры, используйте ConfigurationOperationsExtensions.List.  Пользователи с ролью "Читатель" не могут использовать этот метод. Он позволяет детально контролировать доступ пользователей к конфиденциальной информации для кластера.
    • Чтобы получить только учетные данные шлюза HTTP, используйте ClusterOperationsExtensions.GetGatewaySettings.
  • ConfigurationsOperationsExtensions.Update теперь является нерекомендуемым и заменен на ClusterOperationsExtensions.UpdateGatewaySettings.
  • ConfigurationsOperationsExtensions.EnableHttp и DisableHttp упразднены. Протокол HTTP теперь всегда включен, поэтому эти методы больше не нужны.

Пакет SDK для Python

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

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

Пакет SDK для Java

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

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

Пакет SDK для Go

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

  • ConfigurationsClient.get больше не будет возвращать конфиденциальные параметры, такие как ключи к хранилищу данных (основной сайт) или учетные данные 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 теперь всегда включен, поэтому этот командлет больше не нужен. См. Руководство по миграции az.HDInsight.

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

Пользователь с ролью владельца может назначить роль оператора кластера 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

Добавить назначение роли оператора кластера HDInsight пользователю можно также на портале Azure. См. раздел Назначение ролей Azure с помощью портала Azure.

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

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

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

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

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

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

Что будет, если не предпринять никаких действий?

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

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

Подробнее см. в соответствующем разделе этого документа для вашего сценария.