AccessPolicy
Содержание
OverviewAvailabilityUnderstanding AccessPolicyЧто означает «Использовать коннектор»Как работает AccessPolicyДве модели доступаGranting Default Proxy AccessПримерGranting Access After ApprovalПримерCommon Configuration PatternsВыбор Connectors для защитыПримерВыбор ServiceAccounts, получающих доступ по умолчаниюПримерStatusWhat's NextOverview
AccessPolicy — это ресурс с областью видимости в пространстве имён, который контролирует, кто может использовать Connectors через Connectors Proxy.
Он определяет три вещи:
- какие Connectors охватываются политикой
- предоставляется ли доступ через прокси по умолчанию или только после прохождения проверок
- какие субъекты охватываются этой моделью доступа
В модели Connectors Approval AccessPolicy — это определение политики, тогда как фактический запрос во время выполнения отслеживается отдельно с помощью AccessRequest.
Читайте этот документ после Connectors Approval & Permission Gating.
Этот документ сосредоточен на долгосрочном правиле, которое администраторы разрабатывают:
- какие Connectors охватываются
- кто должен получать доступ через прокси по умолчанию
- какие проверки должны пройти, прежде чем будет предоставлен временный доступ через прокси
Он не повторяет полный жизненный цикл одного запроса во время выполнения. Для этого продолжайте с AccessRequest.
В этой модели использовать коннектор означает использовать путь доступа без секретов коннектора через Connectors Proxy, либо напрямую, либо через Connectors CSI Driver.
AccessPolicy не контролирует доступ к Connectors API. Connectors API использует отдельные разрешения connectors/apis, которые обычно применяются для обнаружения ресурсов в UI или других интеграций на основе API.
Availability
AccessPolicy является частью функционала Connectors Approval.
Перед использованием включите:
enable-connectors-approvalenable-connector-proxy-permissions
Для получения дополнительной информации смотрите Feature Flags.
Understanding AccessPolicy
Что означает «Использовать коннектор»
AccessPolicy сосредоточен на доступе через прокси, а не на чтении объектов Connector или просмотре ресурсов через Connectors API.
Типичные примеры использования коннектора:
- workload отправляет запросы на адрес прокси коннектора
- Pod монтирует конфигурацию коннектора через Connectors CSI Driver, а затем использует целевой инструмент через прокси
- pipeline workload получает временное разрешение на использование чувствительного коннектора только после одобрения
Типичные примеры, которые не входят в область AccessPolicy:
- чтение самого объекта
Connector - просмотр веток, тегов или других ресурсов, ориентированных на UI, через Connectors API
- предоставление разрешений
Connectors APIsпользователям платформы
Как работает AccessPolicy
AccessPolicy располагается между определениями Connector и доступом во время выполнения:
Connector: определяет, как добраться до целевого инструмента и как аутентифицироватьсяAccessPolicy: выбирает Connectors и определяет, кто может получить доступ к целевым инструментам через Connectors Proxy, предоставляемый этими ConnectorsAccessRequest: фиксирует одну попытку доступа во время выполнения, требующую оценки с точки зрения одобрения- сгенерированные
RoleиRoleBinding: материализованные объекты RBAC, создаваемые системой из шаблонов политики
Если вам нужна общая картина того, как эти компоненты взаимодействуют, смотрите Connectors Approval & Permission Gating. Этот документ сосредоточен на проектировании политики и сопоставлении политики.
В общих чертах, процесс следующий:
- Workload пытается использовать Connector через
Connectors Proxyили через Connectors CSI Driver. - Система оценивает сопоставленную
AccessPolicy. - Если политика использует
defaultPermissionи ServiceAccount workload входит в охват, доступ разрешается. - Если политика использует
checkGrantedPermission, система фиксирует попытку во время выполнения вAccessRequestи предоставляет настроенное разрешение на прокси только после успешного прохождения проверок.
Схему ресурса runtime-запросов смотрите в AccessRequest API Reference.
Две модели доступа
Для одного Connector AccessPolicy обычно использует одну из двух моделей доступа через прокси:
Granting Default Proxy AccessсdefaultPermission: сопоставленные ServiceAccounts могут сразу получить доступ к целевому инструменту через прокси ConnectorGranting Access After ApprovalсcheckGrantedPermission: запрос во время выполнения должен пройти проверки, прежде чем будет предоставлено разрешение на прокси
На практике это означает, что доступ через один Connector обычно либо всегда разрешён в известной области, либо регулируется одобрением для чувствительного использования. Следующие два раздела сначала объясняют эти две модели, а раздел Common Configuration Patterns покажет, как ограничить их для Connectors и ServiceAccounts.
Granting Default Proxy Access
spec.defaultPermission — это часть политики, которая предоставляет доступ через прокси сразу, без каких-либо проверок одобрения.
Это обычный выбор, когда:
- Connector низкорисковый внутри пространства имён или проекта
- все workload в одной области должны напрямую использовать целевой инструмент через прокси Connector
- нужна стабильная, не временная модель разрешений
В большинстве случаев встроенный шаблон connectors-use-connectors-proxy является правильной отправной точкой. Это шаблон роли, установленный основным компонентом Connectors, который предоставляет разрешение connectors/proxy для сопоставленного Connector.
Если Connector должен всегда быть доступен внутри пространства имён, проекта или кластера, обычно это единственный раздел разрешений, необходимый в политике.
Чтобы определить, какие Connectors и ServiceAccounts охватывает эта модель, смотрите Common Configuration Patterns.
Пример
Следующая политика даёт builder и deployer немедленный доступ через прокси ко всем OCI Connectors в devops:
Granting Access After Approval
spec.checkGrantedPermission предоставляет разрешение на прокси только после успешного прохождения всех настроенных проверок.
Это обычный выбор, когда:
- Connector чувствительный
- доступ должен предоставляться только для одной runtime-активности
- одобрение является частью процесса доставки или продвижения
Наиболее распространённая встроенная комбинация:
checks[].ref.configMap.name: connectors-approvals-in-pipelineroleTemplate.ref.configMap.name: connectors-use-connectors-proxy-in-pod
Эта комбинация означает:
- найти ресурс одобрения, связанный с объектом во время выполнения
- ждать, пока результат одобрения не станет положительным
- предоставить разрешение на прокси, привязанное к Pod, только для этого конкретного runtime-контекста
connectors-approvals-in-pipeline — встроенный шаблон проверки, установленный основным компонентом Connectors. В сценарии pipeline он использует runtime-контекст Pod для поиска связанной задачи Tekton ApprovalTask по tekton.dev/pipelineRun.
connectors-use-connectors-proxy-in-pod — встроенный шаблон роли, установленный основным компонентом Connectors. Он предоставляет разрешение connectors/proxy/v1/pod/{.object.metadata.namespace}/{.object.metadata.name}, которое связывает разрешение с одним конкретным Pod-контекстом, зафиксированным во время выполнения.
Вы по-прежнему используете те же шаблоны выбора Connector из Common Configuration Patterns; разница в том, что доступ предоставляется для каждого runtime-контекста после успешного прохождения проверок.
Пример
Следующая политика применяется к Connector prod-harbor. Она не даёт доступа по умолчанию. Вместо этого она ждёт встроенной проверки одобрения pipeline и затем предоставляет разрешение на прокси, привязанное к Pod.
Common Configuration Patterns
Выбор Connectors для защиты
AccessPolicy сопоставляется только с Connectors в том же пространстве имён, что и сама политика.
Целевые Connectors определяются в spec.connector:
- оставьте пустым, чтобы сопоставить все Connectors в пространстве имён
- используйте
namesдля выбора конкретных Connectors - используйте
matchLabelsилиmatchExpressionsдля выбора групп Connectors
Это основной механизм для сопоставления одной политики с одним Connector, подмножеством Connectors или всеми Connectors в одной области.
Пример
-
Сопоставить все Connectors в текущем пространстве имён.
-
Сопоставить один конкретный Connector по имени.
-
Сопоставить несколько явно указанных Connectors в одном пространстве имён.
-
Сопоставить все Connectors одного ConnectorClass в пространстве имён.
-
Сопоставить подмножество Connectors по пользовательским меткам, таким как environment или usage.
Выбор ServiceAccounts, получающих доступ по умолчанию
При использовании defaultPermission в bindingTemplate.serviceAccounts определяется, какие ServiceAccounts могут использовать сопоставленный Connector через Connectors Proxy.
Каждый элемент объединяет:
names: имена ServiceAccount для привязкиnamespaceSelector: из каких пространств имён эти ServiceAccounts
Используйте пустой список names, если хотите разрешить всем ServiceAccounts из выбранных пространств имён.
Пример
-
Разрешить всем ServiceAccounts в текущем пространстве имён. Это распространённый шаблон для Connector на уровне пространства имён.
-
Разрешить только выбранным ServiceAccounts в одном пространстве имён, например
builderиdeployerвdevops. -
Разрешить всем ServiceAccounts в одном проекте. Это полезно, когда Connector используется на уровне проекта, а пространства имён проекта помечены меткой
cpaas.io/project. -
Разрешить одному именованному ServiceAccount во всех пространствах имён одного проекта, например
builderв проектеdevops. -
Разрешить всем ServiceAccounts в кластере. Это полезно для Connector, используемого на уровне кластера. В этом случае
AccessPolicyдолжен быть создан в том же пространстве имён, что и общий Connector.
Status
AccessPolicy.status помогает операторам убедиться, что политика применена как задумано.
Важные поля статуса включают:
matchedConnectors: Connectors, которые в данный момент сопоставлены сspec.connectorconditions: статус согласования политики
Этот статус полезен для проверки того, были ли выбраны ожидаемые Connectors, прежде чем исследовать поведение доступа во время выполнения.
What's Next
- Узнайте, как оценивается один запрос во время выполнения в AccessRequest
- Изучите схему в AccessPolicy API Reference
- Повторно ознакомьтесь с общим процессом в Connectors Approval & Permission Gating
- Узнайте, как работает прокси-трафик в Connectors Proxy
- Узнайте, как workloads используют Connectors через Connectors CSI Driver
- Изучите отдельную модель доступа к API в Connector API