агент открытой политики - OPA - Как использовать --config-файл из объекта конфигурации kubernetes - PullRequest
2 голосов
/ 30 апреля 2020

Я пытаюсь настроить свой OPA, как показано ниже.

  1. OPA, установленный в качестве коляски в Кубернетесе
  2. Политика будет управляться как пакет
  3. Политика OPA будет храниться и обслуживаться из отдельной службы [Bundle]
  4. Необходимо настроить OPA с помощью файла конфигурации, чтобы получить политику из внешней службы
  5. файл конфигурации будет сохранен как карта конфигурации в kubernetes.
  6. Эта карта конфигурации должна использоваться в --config-file

Моя карта конфигурации в kubernetes

kubectl create configmap policyconfig --from-file=./config/config.yaml

My Sidecar OPA

 - name: opa
          image: openpolicyagent/opa:latest
          args:
            - "run"
            - "--server"
            - "--addr=0.0.0.0:443"
            - "--addr=0.0.0.0:8181"
            - "--config-file=policyconfig"
      volumes:
        - name: policyconfig
          configMap:
            name: policyconfig

Дайте мне знать, если это возможно реализовать таким образом

Ответы [ 2 ]

3 голосов
/ 30 апреля 2020

Вы можете использовать kube-mgmt в качестве дополнительной машины для управления OPA поверх Kubernetes.

kube-mgmt автоматически обнаруживает политики, хранящиеся в ConfigMaps в Kubernetes, и загружает их в OPA. kube-mgmt предполагает, что ConfigMap содержит политики, если ConfigMap:

  1. Создан в пространстве имен, указанном в параметре --policies. Если вы укажете --policies = *, тогда kube-mgmt будет искать политики во ВСЕХ пространствах имен.
  2. Помечено openpolicyagent.org/policy=rego

opa

https://medium.com/capital-one-tech/policy-enabled-kubernetes-with-open-policy-agent-3b612b3f0203

Обновление:

При текущих настройках и требованиях вам необходимо добавить volumeMounts к заставить это работать

 - name: opa
          image: openpolicyagent/opa:latest
          args:
            - "run"
            - "--server"
            - "--addr=0.0.0.0:443"
            - "--addr=0.0.0.0:8181"
            - "--config-file=policyconfig"
          volumeMounts:
          - name: policyconfig
            mountPath: /config
      volumes:
        - name: policyconfig
          configMap:
            name: policyconfig
0 голосов
/ 30 апреля 2020

В качестве альтернативы вы можете использовать Gatekeeper . Что в дополнение к тому, что kube-mgmt (Gatekeeper 1.0) также предоставляет (на this ):

  • расширяемая параметризованная библиотека политик
  • Собственные CRD Kubernetes для создания экземпляров библиотеки политик (также называемые «ограничениями»)
  • Собственные CRD Kubernetes для расширения библиотеки политик (так называемые «шаблоны ограничений»)
  • Функциональность аудита

Другой недавний инструмент - MagTape .

...