Введение:
Облачный кластер Google Cloud Kubernetes состоит из экземпляров виртуальной машины Compute Engine.При создании кластера учетная запись службы по умолчанию присоединяется к каждому экземпляру виртуальной машины.Эти учетные данные хранятся в метаданных экземпляра, и к ним можно получить доступ, используя приложение Client()
по умолчанию (учетные данные приложения по умолчанию) или указав местоположение учетных данных.
Поиск учетных данных ADC:
from google.cloud import storage
client = storage.Client()
ИЛИ только из метаданных:
from google.auth import compute_engine
from google.cloud import storage
credentials = compute_engine.Credentials()
client = storage.Client(credentials=credentials, project=project)
[Обновить]
Я не хочу пропагандировать плохие методы обеспечения безопасности.Указанные выше методы должны быть заблокированы в защищенных производственных кластерах Kubernetes.
- Использовать учетную запись с минимальными привилегиями для кластера Kubernetes.
- Отключить устаревшие API-интерфейсы сервера метаданных и использовать скрытие метаданных.
- Использование политики безопасности модуля.
- Использование отдельных учетных записей служб для пулов узлов.
- Ограничение трафика между модулями с помощью сетевой политики.
[Конец обновления]
Метод Google Kubernetes:
Для Kubernetes рекомендуется создать отдельную учетную запись службы для каждого приложения, которое запускается вкластеризовать и уменьшить области, примененные к учетной записи службы по умолчанию.Роли, назначенные каждой учетной записи службы, зависят от разрешений, которые требуются приложениям.
Учетные данные учетной записи службы загружаются в виде файла Json, а затем сохраняются в Kubernetes как Secret
.Затем вы должны смонтировать том с секретом (учетные данные).Затем приложение, работающее в контейнере, должно будет загрузить учетные данные при создании клиентов приложений Google, например, для доступа к облачному хранилищу.
Эта команда сохранит загруженный файл учетных данных в секретный том Kubernetes в качестве секрета с именем * 1045.*.Файл учетных данных внутри Kubernetes называется key.json
.Учетные данные загружаются из файла, который был загружен из Google Cloud с именем `/secrets/credentials.json
kubectl create secret generic service-account-credentials --from-file=key.json=/secrets/credentials.json
. В файл развертывания добавьте следующее для подключения тома.
spec:
volumes:
- name: google-cloud-key
secret:
secretName: service-account-credentials
...
containers:
volumeMounts:
- name: google-cloud-key
mountPath: /var/secrets/google
Внутри контейнера учетные данные загружаются из /var/secrets/google/key.json
Python Пример:
from google.cloud import storage
client = storage.Client.from_service_account_json('/var/secrets/google/key.json')
В этом документе представлены пошаговые сведения об учетных данных учетной записи службы в Kubernetes.
Аутентификация в облачной платформе с учетными записями служб