Как скрыть секретные ключи в Google Colaboratory от пользователей, имеющих ссылку общего доступа?

Вопрос задан: 9 месяцев назад Последняя активность: 6 месяцев назад
up 2 down

Я написал сценарий, который извлечь некоторые данные из API и создание файла Excel. Я не DEV, это моя первая реальная программа когда-либо writted. Я принимал код на Google Colab.

Существует API ключей секрет в ясном. Я хочу поделиться с Google Drive обмена ссылкой на людей, которым необходимо сгенерировать файл Excel, так что они могут выполнить. Однако я предпочел бы не включать API секретных ключи ясно для того, чтобы избежать случайного sharings за пределами антрепризы.

Я задаюсь вопросом, как скрыть это... Или, как предоставить пользователям альтернативный METHODE выполнить файл, не зная пароля. У меня нет доступа к общей веб-сервер внутренне антрепризе.

С уважением

CLIENT_KEY = u'*****'
CLIENT_SECRET = u'*****'
BASE_URL = u'*****'

access_token_key = '*****'
access_token_secret = '*****'


print ('Getting user profile...',)
oauth = OAuth(CLIENT_KEY, client_secret=CLIENT_SECRET, resource_owner_key=access_token_key,
              resource_owner_secret=access_token_secret)
r = requests.get(url=BASE_URL + '1/user/me/profile', auth=oauth)
print (json.dumps(r.json(), sort_keys=True, indent=4, separators=(',', ': ')))

...

3 ответа

Возможно, для Вашего проекта будут необходимы бесплатные векторные карты. На нашем сайте представлены карты для всех стран.

Реклама

up 2 down accepted

Для того, чтобы расширить ответ @Korakot Chaovavanich, вот это шаг за шагом этого решения:

  1. Создайте файл и сохранить его на Google диск с ключами в нем. Он должен выглядеть следующим образом:
[default]
aws_access_key_id=AKIAIOSFODNN7EXAMPLE
aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
  1. Установить pydrive
!pip install -U -q PyDrive
  1. Аутентифицировать для Google Диска, загрузить и проанализировать файл кредитки

(Некоторые из этого кода приходит от ответа @ wenkesj на этот вопрос.)

# Imports
import os
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
from google.colab import auth
from oauth2client.client import GoogleCredentials

# Google drive authentication
auth.authenticate_user()
gauth = GoogleAuth()
gauth.credentials = GoogleCredentials.get_application_default()
drive = GoogleDrive(gauth)

# File params
local_save_dir = "/root/.aws"
filename = "credentials"
save_path = "{0}/{1}".format(local_save_dir, filename)

# Choose/create a local (colab) directory to store the data.
local_download_path = os.path.expanduser(local_save_dir)
try:
  os.makedirs(local_download_path)
except: pass

drive_list = drive.ListFile().GetList()
f = [x for x in drive_list if x["title"] == filename][0]

print('title: %s, id: %s' % (f['title'], f['id']))
fname = os.path.join(local_download_path, f['title'])
print('downloading to {}'.format(fname))
f_ = drive.CreateFile({'id': f['id']})
f_.GetContentFile(fname)

with open(save_path) as creds:
    for i, line in enumerate(creds):
        if i == 1:
            access_token_key = line.replace("aws_access_key_id=", "").replace("\n", "")
        if i == 2:
            access_token_secret = line.replace("aws_secret_access_key=", "").replace("\n", "")

Теперь ваши ключи AWS в двух переменных access_token_key & access_token_secret.

up 1 down

Вы можете сохранить секретный ключ в виде файла на Google Диске. Затем прочитать файл в Colab.

Теперь вы можете установить разрешение на доступ к ключевому файлу в Google Drive. Только вы и люди, вы разделяете файл ключа может использовать его.

up 0 down

Пытаться getpass. Например:

from getpass import getpass
secret = getpass('Enter the secret value: ')

Затем вы можете поделиться ноутбуком, и каждый пользователь может ввести определенное значение, которое вы можете использовать позже в ноутбуке как обычная переменная Python.