Переход на детализированный доступ на основе ролей для конфигураций кластера
Мы внедрили несколько важных изменений для поддержки более детализированного доступа на основе ролей при получении конфиденциальной информации. В рамках этих изменений с 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: пользователи, использующие конечные точки
/configurations
или/configurations/{configurationName}
. - Azure HDInsight Tools for Visual Studio Code 1.1.1 или более ранней версии.
- Azure Toolkit for IntelliJ 3.20.0 или более ранней версии.
- Средства Azure Data Lake и Stream Analytics для Visual Studio версии 2.3.9000.1.
- Azure Toolkit for Eclipse 3.15.0 или более ранней версии.
- Пакет SDK для .NET
- Версии 1.x или 2.x: пользователи, использующие методы
GetClusterConfigurations
,GetConnectivitySettings
,ConfigureHttpSettings
,EnableHttp
илиDisableHttp
из класса ConfigurationsOperationsExtensions. - Версии 3.x и более поздние: пользователи, использующие методы
Get
,Update
,EnableHttp
илиDisableHttp
из классаConfigurationsOperationsExtensions
.
- Версии 1.x или 2.x: пользователи, использующие методы
- SDK для Python: пользователи, использующие методы
get
илиupdate
из классаConfigurationsOperations
. - SDK для Java: пользователи, использующие методы
update
илиget
из классаConfigurationsInner
. - SDK для Go: пользователи, использующие методы
Get
илиUpdate
из структурыConfigurationsClient
. - Az.HDInsight PowerShell версии 2.0.0. См. разделы ниже (или перейдите по ссылкам выше), чтобы ознакомиться с этапами миграции для своего сценария.
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 упоминание, она больше не будет работать до обновления.
Подробнее см. в соответствующем разделе этого документа для вашего сценария.