Di tempat kerja kami menggunakan server pypi pribadi. Server pypi ini ditetapkan sebagai tautan ketergantungan:
...
from setuptools import setup
config = ConfigParser.ConfigParser()
rc = os.path.join(os.path.expanduser('~'), '.pypirc')
config.read(rc)
dependency_links = [
'https://{}:{}@<private_url>'.format(
config.get('dc', 'username'), config.get('dc', 'password'))]
setup(
dependency_links=dependency_links,
...)
Ini berfungsi dengan baik di sebagian besar kasus kami. Namun, beberapa waktu lalu kami harus menginstal paket pada server klien. Untuk ini kami harus menyalin yang valid .pypirc
sebelum kami dapat menginstal paket apa pun.
Juga kode di atas hanya terasa seperti hack kotor.
Apa cara yang tepat untuk menentukan tautan dependensi aman tanpa kredensial hardcoding?
Jawaban:
Ini sepertinya hack yang masuk akal dan tidak kotor sama sekali.
Pekerjaan sedang dilakukan dan dilakukan dengan baik, satu-satunya cara untuk membuat ini lebih baik adalah mendokumentasikannya dan mencobanya di beberapa pengaturan berbeda atau dengan beberapa server pypi dan mengatasi masalah yang muncul dari itu.
sumber
Satu kemungkinan adalah pengaturan Variabel Lingkungan . Ini bisa dilakukan dengan alat penyebaran seperti Ansible . Menyimpan rahasia Anda dengan Stack Overflow's Blackbox atau Ansible's Vault
Atau: Containerisasi akan membantu, karena semua yang diperlukan untuk menjalankan perangkat lunak sudah terpasang.
sumber
Berhati-hatilah saat menggunakan solusi ini. Sebagaimana dinyatakan dalam dokumentasi :
Yaitu, kredensial Anda akan didistribusikan di
.egg
. Dengan rooting melaluisetuptools
kode sumber, saya menemukan bahwa secara internal tampaknya menggunakaneasy_install
perintah untuk menginstal dependensi. Karena itu, tambahkan berikut ini kesetup.cfg
penyebab Anda untuk mengambil repo pribadi:Ini masih memiliki snafu yang kredensial Anda bisa cetak ke terminal ketika menginstalnya, tetapi setidaknya mereka tidak berakhir dalam distribusi Anda. Perhatikan bahwa solusi ini menggantikan URL indeks Anda, jadi repo pribadi Anda juga harus mencerminkan yang publik. Saya tidak melihat dukungan untuk menambahkan URL indeks dengan cara yang jelas.
sumber