Как скрыть секретные ключи в Google Colab Laboratory от пользователей, имеющих ссылку для обмена - PullRequest
0 голосов
/ 07 февраля 2019

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

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

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

С уважением

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 ]

0 голосов
/ 08 февраля 2019

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

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

0 голосов
/ 22 апреля 2019

Чтобы расширить ответ @Korakot Chaovavanich, вот пошаговое решение этого вопроса:

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

(Часть этого кода взята из ответа @ 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.

0 голосов
/ 07 февраля 2019

Попробуйте getpass.Например:

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...