Можете ли вы ограничить доступ к учетным данным API Google Cloud? - PullRequest
1 голос
/ 02 февраля 2020

Можно установить ограничения для учетных данных API Google, чтобы ограничить доступ ключа или токена API к определенной c электронной таблице или папке, поэтому эти учетные данные не могут получить доступ ко всей информации учетная запись, но только указанные файлы.

1 Ответ

0 голосов
/ 02 февраля 2020

Конечно!

Облачная платформа Google имеет надежные инструменты для управления доступом ко всем видам вещей, включая доступ к учетным данным API.

GCP IAM - облачные разрешения и доступ

Вы можете создать облачную службу для отправки ответа с вашим ключом, авторизуя только определенные службы для получения / запроса ключа.

Вот документация GCP IAM . Следуйте их инструкциям через консоль внешнего интерфейса или инструменты командной строки, чтобы установить политику для службы ключей API.

Вот суть того, что вы будете делать для IAM:

  1. авторизуйте различные API Google для вашего проекта
  2. создайте учетную запись службы, например, my-api-key@see-the-docs-for-google-service-domain
  3. Для каждого из ваших приложений, которым требуется ключ службы, создайте другую учетную запись службы, например my-app@see-the-docs-for...
  4. , предоставьте любой службе приложения учетные записи для выбранного вами уровня доступа / разрешения для учетной записи службы, которую вы создали для своей учетной записи. служба ключей API
    • вы разрешаете каждому приложению доступ к службе API-ключей
  5. развертывание простой службы Flask для отправки ваш API-ключ с использованием учетной записи API-ключа
  6. доступ к учетным данным API в ваших приложениях, которым были предоставлены разрешения IAM
    • Помните, что вы авторизовали свои приложения на шаге 4

На диске

Для учетных данных, хранящихся на диске, лучше всего шифровать / дешифровать их по требованию в приложении.

См. ТАК . Если вы зашифруете свои ключи, go впереди и добавьте контроль версий. В противном случае избегайте.

Secrets Manager или Berglas

Однако я рекомендую использовать либо инструмент с открытым исходным кодом Berglas , либо управляемый продукт Google Secrets . По сути, вы дадите диспетчеру секретов свой ключ API, сохраните его, а затем получите его, когда это необходимо, в приложении или при загрузке.

Адаптировано из Google Cloud Documentation, почти дословно :

# Import the Secret Manager client library.
from google.cloud import secretmanager_v1beta1 as sm

# GCP project in which to store secrets in Secret Manager.
project_id = 'YOUR_PROJECT_ID'

# ID of the secret to create.
secret_id = 'YOUR_SECRET_ID'

# Create the Secret Manager client.
client = sm.SecretManagerServiceClient()

# Build the parent name from the project.
parent = client.project_path(project_id)

# Create the parent secret
secret = client.create_secret(parent, secret_id, {
    'replication': {
        'automatic': {},
    },
})

# Add the api key
version = client.add_secret_version(secret.name, {'data': b'my-google-api-credentials'})

# Access the api key
response = client.access_secret_version(version.name)

# Now you have your decoded api credentials you can use for authentication
payload = response.payload.data.decode('UTF-8')

Я изменил некоторые комментарии выше, но обязательно ознакомьтесь с документацией Google и их примерами github .

Если вы более предприимчивы, библиотека Berglas просто фантастическая c, и я использую ее непосредственно в нескольких проектах, через локальный клиент Go и образ docker в развернутых службах.

...