Các liên kết phụ thuộc riêng tư nên được xử lý như thế nào trong setup.py


10

Trong công việc, chúng tôi sử dụng một máy chủ pypi riêng. Máy chủ pypi này được chỉ định làm liên kết phụ thuộc:

...
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,
    ...)

Điều này hoạt động tốt trong hầu hết các trường hợp của chúng tôi. Tuy nhiên, một thời gian trước chúng tôi phải cài đặt các gói trên máy chủ. Đối với điều này, chúng tôi đã phải sao chép hợp lệ .pypirctrước khi chúng tôi có thể cài đặt bất kỳ gói nào.

Ngoài ra các mã ở trên chỉ cảm thấy như một hack bẩn.

Cách thích hợp để xác định các liên kết phụ thuộc được bảo mật mà không có thông tin mã hóa cứng là gì?


1
Tôi hiểu ý bạn là gì. Nó không bẩn như vậy đối với một vụ hack, nhưng điều đó có nghĩa là bạn kết hợp xác thực với quản lý phụ thuộc trên cơ sở mỗi gói. Cách tiếp cận này không phải là di động hoặc có thể mở rộng.
Joel Cornett

Câu trả lời:


1

Điều này có vẻ như hợp lý và không phải là một hack bẩn.

  1. Có một tệp cấu hình cho thông tin đăng nhập
  2. Có một cách để đưa URL tùy chỉnh + tín dụng vào các phụ thuộc

Công việc đang được thực hiện và được thực hiện tốt, cách duy nhất để làm cho điều này tốt hơn là ghi lại và thử nó trên nhiều thiết lập khác nhau hoặc với nhiều máy chủ pypi và giải quyết các vấn đề phát sinh từ đó.


0

Một khả năng sẽ là thiết lập Biến môi trường . Điều này có thể được thực hiện với các công cụ triển khai như Ansible . Lưu trữ bí mật của bạn với Hộp đen của Stack Overflow hoặc Ansible's Vault

Ngoài ra: Containerization sẽ giúp ích, vì mọi thứ cần thiết để chạy phần mềm đều được tích hợp sẵn.


0

Hãy thật cẩn thận khi sử dụng giải pháp này. Như đã nêu trong tài liệu :

Chúng cũng sẽ được ghi vào siêu dữ liệu của trứng để sử dụng bởi các công cụ như EasyInstall để sử dụng khi cài đặt tệp .egg.

Tức là thông tin đăng nhập của bạn sẽ được phân phối trong .egg. Bằng cách root thông qua setuptoolsmã nguồn, tôi phát hiện ra rằng bên trong nó dường như đang sử dụng easy_installlệnh để cài đặt các phụ thuộc. Do đó, việc thêm các mục sau vào setup.cfgnguyên nhân của bạn để nhận một repo riêng:

[easy_install]
index_url=https://username:password@your.repo/simple

Điều này vẫn có snafu rằng thông tin đăng nhập của bạn được in tới thiết bị đầu cuối khi cài đặt nó, nhưng ít nhất chúng không kết thúc trong bản phân phối của bạn. Lưu ý rằng giải pháp này thay thế URL chỉ mục của bạn, vì vậy repo riêng của bạn cũng phải phản chiếu công khai. Tôi không thấy hỗ trợ để thêm URL chỉ mục theo bất kỳ cách rõ ràng nào.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.