#kubernetes #kubectl #kubernetes-secrets
Вопрос:
Я хотел бы знать, kubectl
предлагает ли простой способ перечислить все секреты, которые использует определенный pod / deployment / statefulset, или есть какой-то способ чистого извлечения этой информации. Когда я делаю kubectl describe
для модуля, я вижу, что могу получить список смонтированных томов, которые включают в себя те, которые исходят из секретов, которые я мог бы извлечь, используя jq
и тому подобное, но этот способ кажется немного неуклюжим. Я немного поискал, но безрезультатно. Вы не знаете, есть ли что-нибудь подобное поблизости? Возможно, используя API напрямую?
Ответ №1:
Чтобы перечислить все секреты, используемые в настоящее время модулем, используйте:
kubectl get pods -o json | jq '.items[].spec.containers[].env[]?.valueFrom.secretKeyRef.name' | grep -v null | sort | uniq
С другой стороны, если вы хотите получить доступ к сохраненным секретам в API:
Секреты Kubernetes по умолчанию хранятся в незашифрованном виде в базовом хранилище данных сервера API (etcd). Любой, у кого есть доступ к API, может получить или изменить секрет, так же как и любой, у кого есть доступ к etcd. Кроме того, любой, кто имеет право создавать Pod в пространстве имен, может использовать это, чтобы безопасно использовать секреты, выполните по крайней мере следующие шаги:
- Включите шифрование в состоянии покоя для секретов.
- Включить или настроить правила RBAC, которые ограничивают чтение данных в секретах (в том числе с помощью косвенных средств).
- При необходимости также используйте такие механизмы, как RBAC, чтобы ограничить, каким участникам разрешено создавать новые секреты или заменять существующие
. доступ для чтения любого секрета в этом пространстве имен; это включает
косвенный доступ, такой как возможность создания развертывания.
Если вам нужна дополнительная информация о секретах в kubernetes, перейдите по этой ссылке.
Комментарии:
1. Извините, что так долго отмечали ваш ответ как принятый! Ошибка с моей стороны. Большое вам спасибо!