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


Предоставление доступа к ресурсам Azure Kubernetes Fleet Manager с помощью управления доступом на основе ролей Azure

В этой статье представлен обзор различных встроенных ролей Azure RBAC, которые можно использовать для доступа к ресурсам Azure Kubernetes Fleet Manager (Kubernetes Fleet).

Управление доступом на основе ролей Azure (Azure RBAC) — это система авторизации, основанная на Azure Resource Manager, которая обеспечивает точное управление доступом к ресурсам Azure.

Azure Resource Manager

Эти роли предоставляют доступ к ресурсам и подресурсам парка Azure Resource Manager (ARM) и применимы к диспетчерам флотов с кластером концентраторов и без них.

Имя роли Описание Использование
Сотрудник по управлению флотом Azure Kubernetes Эта роль предоставляет доступ на чтение и запись к ресурсам Azure, предоставляемым диспетчером флотов Azure Kubernetes, включая флоты, членов флота, стратегии обновления флота, запуски обновлений флота и многое другое. Эту роль можно использовать для предоставления разрешений участника, которые применяются исключительно к ресурсам и подресурсам Kubernetes Fleet. Например, эту роль можно предоставить администратору Azure, чтобы определить и сохранить ресурсы Флота.
Роль пользователя кластера Концентратора диспетчера флота Azure Kubernetes Эта роль предоставляет доступ только для чтения к кластеру концентратора Fleet Manager и к файлу конфигурации Kubernetes для подключения к управляемому кластеру концентратора флота. Вы можете просматривать ресурсы Fleet Manager и скачать kubeconfig кластера концентратора, чтобы проверить конфигурации и рабочие нагрузки без внесения изменений.

Плоскость данных Kubernetes

Роли Fleet data plane можно назначить на уровне Fleet или в отдельных управляемых пространствах имен.

Существует два типа ролей плоскости данных: роли RBAC и роли RBAC для кластеров-участников. Роли RBAC предоставляют доступ только к объектам Kubernetes в кластере, управляемом флотом. Роли RBAC для кластеров-членов предоставляют доступ только к объектам Kubernetes в кластерах-членах в флоте. Применение роли RBAC для кластеров членов в области управляемого пространства имен применяется к управляемому пространству имен для всех членов родительского парка независимо от того, распространяется ли управляемое пространство имен на этот элемент.

Когда кластер, входящий в состав, присоединяется к Fleet, пользователь получает все разрешения, предоставленные на уровне главного Fleet для этого кластера. Когда кластер-член покидает парк, пользователь теряет эти разрешения для этого кластера. Например, пользователь, которому назначена роль Azure Kubernetes Fleet Manager RBAC Cluster Admin for Member Clusters в области Флот, может создавать пространства имен во всех кластерах-членах, только пока эти кластеры остаются во Флоте.

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

На данный момент эти роли RBAC не поддерживаются для членов Arc в флоте. Кроме того, управление доступом для определенных пользовательских ресурсов Kubernetes (CR) не поддерживается для этих ролей Azure RBAC.

Имя роли Описание Использование
Средство чтения RBAC диспетчера флота Azure Kubernetes Предоставляет доступ только для чтения к большинству ресурсов Kubernetes в пространстве имен в кластере, управляемом флотом. Оно не позволяет просматривать роли или привязки ролей. Эта роль не позволяет просматривать секреты, так как чтение содержимого секретов обеспечивает доступ к ServiceAccount учетным данным в пространстве имен, что позволит API получить доступ как к любому ServiceAccount в пространстве имен (форма эскалации привилегий). Применение этой роли в области кластера предоставляет доступ ко всем пространствам имен. Эту роль можно использовать для предоставления возможности чтения выбранных нечувствительных объектов Kubernetes в пространстве имен или области кластера. Например, вы можете предоставить эту роль в целях проверки.
Автор правил RBAC для диспетчера флота Azure Kubernetes Предоставляет доступ на чтение и запись к большинству ресурсов Kubernetes в пространстве имен в кластере, управляемом флотом. Эта роль не позволяет просматривать или изменять роли или привязки ролей. Однако эта роль позволяет получать доступ к секретам как к любому ServiceAccount в пространстве имен, поэтому его можно использовать для получения уровней доступа API любого ServiceAccount из пространств имен. Применение этой роли в области кластера предоставляет доступ ко всем пространствам имен. Эту роль можно использовать для предоставления возможности записи выбранных объектов Kubernetes в пространстве имен или области кластера. Например, для использования командой проекта, ответственной за объекты в заданном пространстве имен.
Администратор RBAC диспетчера парка Azure Kubernetes Предоставляет доступ на чтение и запись к ресурсам Kubernetes в пространстве имен в кластере, управляемом флотом. Предоставляет разрешения на запись для большинства объектов в пространстве имен, за исключением ResourceQuota объекта и самого объекта пространства имен. Применение этой роли в области кластера предоставляет доступ ко всем пространствам имен. Эту роль можно использовать для предоставления возможности администрирования выбранных объектов Kubernetes (включая роли и привязки ролей) в пространстве имен или области кластера. Например, для использования командой проекта, ответственной за объекты в заданном пространстве имен.
Администратор кластера RBAC диспетчера парка Azure Kubernetes Предоставляет доступ на чтение и запись ко всем ресурсам Kubernetes в кластере, управляемом флотом. Эту роль можно использовать для предоставления доступа ко всем объектам Kubernetes (включая CRD) в пространстве имен или области кластера.
Средство чтения RBAC менеджера флота Azure Kubernetes для кластеров-участников Доступ только для чтения к большинству объектов в пространстве имен в кластере-члене. Не удается просмотреть роли или привязки ролей. Не удается просмотреть секреты (предотвращает эскалацию привилегий с помощью учетных данных ServiceAccount). Эту роль можно использовать для предоставления возможности считывать выбранные нечувствительные объекты Kubernetes на уровне пространства имен в узлах флота.
Диспетчер Azure Kubernetes Fleet, отвечающий за запись RBAC для членских кластеров Доступ на чтение и запись к большинству ресурсов Kubernetes в неймспейсе. Не удается просмотреть или изменить роли или привязки ролей. Может считывать секреты (поэтому может предполагать любой ServiceAccount в пространстве имен). Эту роль можно использовать для предоставления права записи выбранных объектов Kubernetes в пространстве имен у участника флота. Например, для использования командой проекта, ответственной за объекты в заданном пространстве имен.
Администратор RBAC флит-менеджера Azure Kubernetes для узловых кластеров Доступ на чтение и запись к ресурсам Kubernetes в пространстве имен на кластере-участнике. Эту роль можно использовать для предоставления возможности администрировать определенные объекты Kubernetes (включая роли и привязки ролей) на уровне пространства имен в членах флота. Например, для использования командой проекта, ответственной за объекты в заданном пространстве имен.
Администратор RBAC кластеров-членов в Azure Kubernetes Fleet Manager Полный доступ на чтение и запись ко всем ресурсам Kubernetes в кластерах-членах в флоте. Эта роль используется для предоставления полного доступа ко всем ресурсам в кластерах-членах. Например, администратор платформы, который должен получить доступ к нескольким пространствам имен в кластерах-членах.

Примеры назначений ролей

Роли Azure RBAC можно предоставить с помощью Azure CLI. Например, чтобы создать назначение ролей в области флота:

IDENTITY=$(az ad signed-in-user show --output tsv --query id)
FLEET_ID=$(az fleet show --resource-group $GROUP --name $FLEET --output tsv --query id)

az role assignment create \
    --role 'Azure Kubernetes Fleet Manager RBAC Reader' \
    --assignee "$IDENTITY" \
    --scope "$FLEET_ID"

Вы также можете ограничить назначения ролей для отдельного управляемого пространства имен, добавив /managedNamespaces/<managed-namespace> к области действия Fleet ID. Например, чтобы создать роль на уровне управляемого пространства имен для пространства example-ns имен:

IDENTITY=$(az ad signed-in-user show --output tsv --query id)
FLEET_ID=$(az fleet show --resource-group $GROUP --name $FLEET --output tsv --query id)
MANAGED_NAMESPACE_NAME="example-ns"

az role assignment create --role 'Azure Kubernetes Fleet Manager RBAC Reader' --assignee "$IDENTITY" --scope "$FLEET_ID"/managedNamespaces/"$MANAGED_NAMESPACE_NAME"