Hướng dẫn python keyring mac - móc khóa python mac

Hướng dẫn python keyring mac - móc khóa python mac

Nội dung chính ShowShow

  • Cài đặt - Linux
  • Khả năng tương thích - MacOS
  • Sử dụng Keyring
  • Tiện ích dòng lệnh
  • Cấu hình
  • Cấu hình đường dẫn tệp
  • Cấu hình nội dung tệp
  • Phụ trợ của bên thứ ba
  • Viết phụ trợ Keyring của riêng bạn
  • Cấu hình thời gian chạy
  • Vô hiệu hóa Keyring
  • Thay đổi hành vi khóa
  • Sử dụng Keyring trên Ubuntu 16.04
  • Sử dụng Keyring trên các hệ thống Linux không đầu
  • Sử dụng Keyring trên các hệ thống Linux không đầu trong thùng chứa Docker
  • Hội nhập
  • Ngoại lệ
  • Tham gia vào
  • Cho doanh nghiệp
  • Liên hệ bảo mật
  • Cân nhắc về Bảo mật
  • KDE4 & KDE5 KWALLET
  • Những điều khác cần xem xét khi phát hành:
  • Các thử nghiệm liên tục chạy trong các hành động của GitHub.

Nội dung chính ShowShowShow

  • Cài đặt - Linux
  • Khả năng tương thích - MacOS
  • Sử dụng Keyring
  • Tiện ích dòng lệnh
  • Cấu hình
  • Cấu hình đường dẫn tệp
  • Cấu hình nội dung tệp
  • Phụ trợ của bên thứ ba
  • Viết phụ trợ Keyring của riêng bạn
  • Cấu hình thời gian chạy
  • Vô hiệu hóa Keyring
  • Thay đổi hành vi khóa
  • Sử dụng Keyring trên Ubuntu 16.04
  • Sử dụng Keyring trên các hệ thống Linux không đầu
  • Sử dụng Keyring trên các hệ thống Linux không đầu trong thùng chứa Docker
  • Hội nhập
  • Ngoại lệ
  • Tham gia vào
  • Cho doanh nghiệp
  • Liên hệ bảo mật
  • Cân nhắc về Bảo mật
  • KDE4 & KDE5 KWALLET
  • Những điều khác cần xem xét khi phát hành:
  • Các thử nghiệm liên tục chạy trong các hành động của GitHub.

Nội dung chính ShowShowShow

  • Cài đặt - Linux
  • Khả năng tương thích - MacOS
  • Sử dụng Keyring
  • Tiện ích dòng lệnh
  • Cấu hình
  • Cấu hình đường dẫn tệp
  • Cấu hình nội dung tệp
  • Phụ trợ của bên thứ ba
  • Viết phụ trợ Keyring của riêng bạn
  • Cấu hình thời gian chạy
  • Vô hiệu hóa Keyring
  • Thay đổi hành vi khóa
  • Sử dụng Keyring trên Ubuntu 16.04
  • Sử dụng Keyring trên các hệ thống Linux không đầu
  • Sử dụng Keyring trên các hệ thống Linux không đầu trong thùng chứa Docker
  • Hội nhập
  • Ngoại lệ
  • Tham gia vào
  • Cho doanh nghiệp
  • Liên hệ bảo mật
  • Cân nhắc về Bảo mật
  • KDE4 & KDE5 KWALLET
  • Những điều khác cần xem xét khi phát hành:
  • Các thử nghiệm liên tục chạy trong các hành động của GitHub.

Nội dung chính ShowShow

Nội dung chính ShowShowShow

  • Thư viện Keyring Python cung cấp một cách dễ dàng để truy cập dịch vụ Keyring hệ thống từ Python. Nó có thể được sử dụng trong bất kỳ ứng dụng nào cần lưu trữ mật khẩu an toàn.

  • Những phụ trợ Keyring được đề xuất này được hỗ trợ:

  • Keychain MacOS

  • Dịch vụ bí mật Freedesktop hỗ trợ nhiều DE bao gồm Gnome (yêu cầu bí mật)

KDE4 & KDE5 KWALLET (Yêu cầu DBU)

Cài đặt - Linux

Windows Ch dụng khóa thông tin

Khả năng tương thích - MacOS

Các triển khai Keyring khác có sẵn thông qua phụ trợ của bên thứ ba.

Sử dụng Keyring

Trên Linux, phụ trợ KWALLET dựa vào DBUS-Python, không phải lúc nào cũng cài đặt chính xác khi sử dụng PIP (cần biên dịch). Để có kết quả tốt nhất, hãy cài đặt DBUS-Python làm gói hệ thống.keyring.set_password and keyring.get_password:

>>> import keyring
>>> keyring.set_password("system", "username", "password")
>>> keyring.get_password("system", "username")
'password'

Tiện ích dòng lệnh

MacOS Keychain hỗ trợ MacOS 11 (Big Sur) và sau đó yêu cầu Python 3.8.7 trở lên với nhị phân của Universal Universal2. Xem #525 để biết chi tiết.keyring.set_password and keyring.get_password:keyring command which is installed with the package. After installing keyring in most environments, the command should be available for setting, getting, and deleting passwords. For more usage information, invoke with no arguments or with --help as so:

$ keyring --help
$ keyring set system username
Password for 'username' in 'system':
$ keyring get system username
password

Cấu hình đường dẫn tệp

Việc sử dụng cơ bản của Keyring khá đơn giản: Chỉ cần gọi Keyring.Set_Password và Keyring.Get_Password:keyring.set_password and keyring.get_password:keyring.set_password and keyring.get_password:keyring command which is installed with the package. After installing keyring in most environments, the command should be available for setting, getting, and deleting passwords. For more usage information, invoke with no arguments or with --help as so:

Cấu hình

$ python -m keyring --help
$ python -m keyring set system username
Password for 'username' in 'system':
$ python -m keyring get system username
password
set_keyring() function.

Cấu hình đường dẫn tệp

Cấu hình nội dung tệp

python -c "import keyring.util.platform_; print(keyring.util.platform_.config_root())"

Phụ trợ của bên thứ ba

Cấu hìnhkeyring command which is installed with the package. After installing keyring in most environments, the command should be available for setting, getting, and deleting passwords. For more usage information, invoke with no arguments or with --help as so:set_keyring() function.

Cấu hình nội dung tệp

python -c "import keyring.util.platform_; print(keyring.util.platform_.data_root())"
default-keyring option to the full path of the class for that backend, such as keyring.backends.OS_X.Keyring.

Phụ trợ của bên thứ badefault-keyring option to the full path of the class for that backend, such as keyring.backends.OS_X.Keyring.keyring-path is indicated, keyring will add that path to the Python module search path before loading the backend.

Viết phụ trợ Keyring của riêng bạnkeyring-path is indicated, keyring will add that path to the Python module search path before loading the backend.SimpleKeyring from the simplekeyring module in the ./demo directory (not implemented):

[backend]
default-keyring=simplekeyring.SimpleKeyring
keyring-path=demo

Phụ trợ của bên thứ ba

Viết phụ trợ Keyring của riêng bạn

  • Cấu hình thời gian chạy

  • Vô hiệu hóa Keyring

  • Thay đổi hành vi khóa

  • Sử dụng Keyring trên Ubuntu 16.04

  • Sử dụng Keyring trên các hệ thống Linux không đầu

  • Sử dụng Keyring trên các hệ thống Linux không đầu trong thùng chứa Docker

  • Hội nhập

Viết phụ trợ Keyring của riêng bạn

Ngoại lệkeyring.backend.KeyringBackend. Every backend should derive from that base class and define a priority attribute and three functions: get_password(), set_password(), and delete_password(). The get_credential() function may be defined if desired.

Vô hiệu hóa Keyringbackend module for more detail on the interface of this class.backend module for more detail on the interface of this class.

Thay đổi hành vi khóakeyrings namespace, in a manner modeled by the keyrings.alt package. See the setup.cfg file in that project for hints on how to create the requisite entry points. Backends that prove essential may be considered for inclusion in the core library, although the ease of installing these third-party packages should mean that extensions may be readily available.keyrings namespace, in a manner modeled by the keyrings.alt package. See the setup.cfg file in that project for hints on how to create the requisite entry points. Backends that prove essential may be considered for inclusion in the core library, although the ease of installing these third-party packages should mean that extensions may be readily available.

Để tạo tiện ích mở rộng cho Keyring, vui lòng gửi yêu cầu kéo để mở rộng được đề cập dưới dạng tiện ích mở rộng có sẵn.

Cấu hình thời gian chạy

Ngoài ra, Keyring cho phép cấu hình lập trình của phần phụ trợ gọi API set_keyring (). Các phụ trợ được chỉ định sau đó sẽ được sử dụng để lưu trữ và truy xuất mật khẩu.set_keyring(). The indicated backend will subsequently be used to store and retrieve passwords.set_keyring(). The indicated backend will subsequently be used to store and retrieve passwords.set_keyring(). The indicated backend will subsequently be used to store and retrieve passwords.set_keyring(). The indicated backend will subsequently be used to store and retrieve passwords.

Để gọi set_keyring:set_keyring:set_keyring:set_keyring:set_keyring:

# define a new keyring class which extends the KeyringBackend
import keyring.backend

class TestKeyring(keyring.backend.KeyringBackend):
    """A test keyring which always outputs the same password
    """
    priority = 1

    def set_password(self, servicename, username, password):
        pass

    def get_password(self, servicename, username):
        return "password from TestKeyring"

    def delete_password(self, servicename, username):
        pass

# set the keyring for keyring lib
keyring.set_keyring(TestKeyring())

# invoke the keyring lib
try:
    keyring.set_password("demo-service", "tarek", "passexample")
    print("password stored successfully")
except keyring.errors.PasswordSetError:
    print("failed to store password")
print("password", keyring.get_password("demo-service", "tarek"))

Vô hiệu hóa Keyring

Trong nhiều trường hợp, việc gỡ cài đặt Keyring sẽ không bao giờ cần thiết. Đặc biệt là trên Windows và MacOS, hành vi của Keyring thường bị thoái hóa, có nghĩa là nó sẽ trả lại các giá trị trống cho người gọi, cho phép người gọi quay trở lại với một số hành vi khác.

Trong một số trường hợp, hành vi mặc định của Keyring là không mong muốn và sẽ tốt hơn là vô hiệu hóa hoàn toàn hành vi khóa. Có một số cơ chế để vô hiệu hóa Keyring:

  • Gỡ cài đặt Keyring. Hầu hết các ứng dụng đều có thể lắp đặt Keyring không được cài đặt. Gỡ cài đặt Keyring sẽ khiến các ứng dụng đó quay trở lại hành vi mà không cần khóa. Cách tiếp cận này ảnh hưởng đến môi trường Python nơi Keyring sẽ được cài đặt.

  • Định cấu hình Keyring Null trong môi trường. Đặt python_keyring_backend = keyring.backends.null.keyring trong môi trường và phụ trợ null (thoái hóa) sẽ được sử dụng. Cách tiếp cận này ảnh hưởng đến tất cả các cách sử dụng của Keyring trong đó biến đó được đặt.PYTHON_KEYRING_BACKEND=keyring.backends.null.Keyring in the environment, and the Null (degenerate) backend will be used. This approach affects all uses of Keyring where that variable is set.PYTHON_KEYRING_BACKEND=keyring.backends.null.Keyring in the environment, and the Null (degenerate) backend will be used. This approach affects all uses of Keyring where that variable is set.PYTHON_KEYRING_BACKEND=keyring.backends.null.Keyring in the environment, and the Null (degenerate) backend will be used. This approach affects all uses of Keyring where that variable is set.PYTHON_KEYRING_BACKEND=keyring.backends.null.Keyring in the environment, and the Null (degenerate) backend will be used. This approach affects all uses of Keyring where that variable is set.

  • Cấu hình vĩnh viễn KEYRING NULL cho người dùng bằng cách chạy KEYRING -có thể điều chỉnh được hoặc Keython -M Keyring - -bị biến dạng. Cách tiếp cận này ảnh hưởng đến tất cả việc sử dụng Keyring cho người dùng đó.keyring --disable or python -m keyring --disable. This approach affects all uses of keyring for that user.keyring --disable or python -m keyring --disable. This approach affects all uses of keyring for that user.keyring --disable or python -m keyring --disable. This approach affects all uses of keyring for that user.keyring --disable or python -m keyring --disable. This approach affects all uses of keyring for that user.

Thay đổi hành vi khóa

Keyring cung cấp một cơ chế để thay đổi hành vi Keyring, thông qua các biến môi trường. Mỗi phụ trợ thực hiện một KeyringBackend.Set_ProperIES_FROM_ENV, khi được gọi sẽ tìm thấy tất cả các biến môi trường bắt đầu bằng keyring_property_ {name} và sẽ đặt một thuộc tính cho mỗi {name.lower ()} trên Keyring. Phương pháp này được gọi trong khi khởi tạo cho khóa mặc định/được định cấu hình.KeyringBackend.set_properties_from_env, which when invoked will find all environment variables beginning with KEYRING_PROPERTY_{NAME} and will set a property for each {NAME.lower()} on the keyring. This method is invoked during initialization for the default/configured keyring.KeyringBackend.set_properties_from_env, which when invoked will find all environment variables beginning with KEYRING_PROPERTY_{NAME} and will set a property for each {NAME.lower()} on the keyring. This method is invoked during initialization for the default/configured keyring.KeyringBackend.set_properties_from_env, which when invoked will find all environment variables beginning with KEYRING_PROPERTY_{NAME} and will set a property for each {NAME.lower()} on the keyring. This method is invoked during initialization for the default/configured keyring.KeyringBackend.set_properties_from_env, which when invoked will find all environment variables beginning with KEYRING_PROPERTY_{NAME} and will set a property for each {NAME.lower()} on the keyring. This method is invoked during initialization for the default/configured keyring.

Cơ chế này có thể được sử dụng để đặt một số giá trị hữu ích cho các khóa khác nhau, bao gồm:

  • Keychain; macOS, đường dẫn đến một tệp keychain thay thế

  • apid; Linux/SecretService, ID thay thế cho ứng dụng

Sử dụng Keyring trên Ubuntu 16.04

Sau đây là bảng điểm hoàn chỉnh để cài đặt Keyring trong môi trường ảo trên Ubuntu 16.04. Không có tệp cấu hình nào được sử dụng:

$ sudo apt install python3-venv libdbus-glib-1-dev
$ cd /tmp
$ pyvenv py3
$ source py3/bin/activate
$ pip install -U pip
$ pip install secretstorage dbus-python
$ pip install keyring
$ python
>>> import keyring
>>> keyring.get_keyring()
<keyring.backends.SecretService.Keyring object at 0x7f9b9c971ba8>
>>> keyring.set_password("system", "username", "password")
>>> keyring.get_password("system", "username")
'password'

Sử dụng Keyring trên các hệ thống Linux không đầu

Có thể sử dụng phụ trợ SecretService trên các hệ thống Linux mà không có máy chủ X11 (chỉ cần D-bus). Trong trường hợp này:

  • Cài đặt trình nền Keyring Gnome.

  • Bắt đầu một phiên D-Bus, ví dụ: Chạy-session chạy DBUS-- SH và chạy các lệnh sau bên trong vỏ đó.dbus-run-session-- sh and run the following commands inside that shell.dbus-run-session-- sh and run the following commands inside that shell.dbus-run-session -- sh and run the following commands inside that shell.

  • Chạy Gnome-Keyring-Daemon với tùy chọn --unlock. Mô tả của tùy chọn đó cho biết:gnome-keyring-daemon with --unlock option. The description of that option says:gnome-keyring-daemon with --unlock option. The description of that option says:gnome-keyring-daemon with --unlock option. The description of that option says:

    Đọc mật khẩu từ Stdin và sử dụng nó để mở khóa Keyring đăng nhập hoặc tạo nó nếu Keyring đăng nhập không tồn tại.

    Khi lệnh đó được bắt đầu, hãy nhập mật khẩu vào Stdin và nhấn Ctrl+D (cuối dữ liệu). Sau đó, Daemon sẽ ngã ba vào nền (sử dụng -tùy chọn trước để chặn).--foreground option to block).--foreground option to block).--foreground option to block).

  • Bây giờ bạn có thể sử dụng phần phụ trợ bí mật của Keyring. Hãy nhớ chạy ứng dụng của bạn trong cùng một phiên D-bus với trình nền.

Sử dụng Keyring trên các hệ thống Linux không đầu trong thùng chứa Docker

Có thể sử dụng Keyring với phần phụ trợ bí mật trong các thùng chứa Docker. Tất cả những gì bạn cần làm là cài đặt các phụ thuộc cần thiết và thêm cờ của bạn để tránh mọi hoạt động không được phép lỗi khi cố gắng mở khóa hệ thống Keyring.

Sau đây là bảng điểm hoàn chỉnh để cài đặt Keyring trên container Ubuntu 18:04:

docker run -it -d --privileged ubuntu:18.04

$ apt-get update
$ apt install -y gnome-keyring python3-venv python3-dev
$ python3 -m venv venv
$ source venv/bin/activate # source a virtual environment to avoid polluting your system
$ pip3 install --upgrade pip
$ pip3 install keyring
$ dbus-run-session -- sh # this will drop you into a new D-bus shell
$ echo 'somecredstorepass' | gnome-keyring-daemon --unlock # unlock the system's keyring

$ python
>>> import keyring
>>> keyring.get_keyring()
<keyring.backends.SecretService.Keyring object at 0x7f9b9c971ba8>
>>> keyring.set_password("system", "username", "password")
>>> keyring.get_password("system", "username")
'password'

Hội nhập

API

LIB KEYRING có một vài chức năng:

  • get_keyring (): Trả về triển khai Keyring hiện đang được tải.: Return the currently-loaded keyring implementation.: Return the currently-loaded keyring implementation.: Return the currently-loaded keyring implementation.

  • get_password (dịch vụ, tên người dùng): Trả về mật khẩu được lưu trữ trong khóa hoạt động. Nếu mật khẩu không tồn tại, nó sẽ không trả về.: Returns the password stored in the active keyring. If the password does not exist, it will return None.: Returns the password stored in the active keyring. If the password does not exist, it will return None.: Returns the password stored in the active keyring. If the password does not exist, it will return None.

  • get_credential (dịch vụ, tên người dùng): Trả về một đối tượng thông tin xác thực được lưu trữ trong Keyring hoạt động. Đối tượng này chứa ít nhất các thuộc tính tên người dùng và mật khẩu cho dịch vụ được chỉ định, trong đó tên người dùng được trả về có thể khác với đối số.: Return a credential object stored in the active keyring. This object contains at least username and password attributes for the specified service, where the returned username may be different from the argument.: Return a credential object stored in the active keyring. This object contains at least username and password attributes for the specified service, where the returned username may be different from the argument.: Return a credential object stored in the active keyring. This object contains at least username and password attributes for the specified service, where the returned username may be different from the argument.

  • set_password (dịch vụ, tên người dùng, mật khẩu): Lưu trữ mật khẩu trong khóa.: Store the password in the keyring.: Store the password in the keyring.: Store the password in the keyring.

  • Delete_Password (Dịch vụ, Tên người dùng): Xóa mật khẩu được lưu trữ trong Keyring. Nếu mật khẩu không tồn tại, nó sẽ tăng một ngoại lệ.: Delete the password stored in keyring. If the password does not exist, it will raise an exception.: Delete the password stored in keyring. If the password does not exist, it will raise an exception.: Delete the password stored in keyring. If the password does not exist, it will raise an exception.

Trong mọi trường hợp, các tham số (dịch vụ, tên người dùng, mật khẩu) phải là văn bản Unicode.service, username, password) should be Unicode text.service, username, password) should be Unicode text.service, username, password) should be Unicode text.

Ngoại lệ

LIB KEYRING làm tăng các trường hợp ngoại lệ sau:

  • Keyring.Errors.KeyRingError: Lớp lỗi cơ sở cho tất cả các ngoại lệ trong Keyring lib.: Base Error class for all exceptions in keyring lib.: Base Error class for all exceptions in keyring lib.: Base Error class for all exceptions in keyring lib.

  • Keyring.Errors.initerror: Lớn lên khi không thể khởi tạo Keyring.: Raised when the keyring cannot be initialized.: Raised when the keyring cannot be initialized.: Raised when the keyring cannot be initialized.

  • Keyring.Errors.PasswordsetError: Được nâng lên khi mật khẩu không thể được đặt trong Keyring.: Raised when the password cannot be set in the keyring.: Raised when the password cannot be set in the keyring.: Raised when the password cannot be set in the keyring.

  • Keyring.Errors.PasswordDeleteError: Được nâng lên khi mật khẩu không thể bị xóa trong Keyring.: Raised when the password cannot be deleted in the keyring.: Raised when the password cannot be deleted in the keyring.: Raised when the password cannot be deleted in the keyring.

Tham gia vào

Python Keyring Lib là một dự án cộng đồng mở và háo hức chào đón những người đóng góp.

  • Kho lưu trữ: https://github.com/jaraco/keyring/

  • Trình theo dõi lỗi: https://github.com/jaraco/keyring/issues/

  • Danh sách gửi thư: http://groups.google.com/group/python-keyring

Cho doanh nghiệp

Có sẵn như một phần của đăng ký Tidelift.

Dự án này và người bảo trì hàng ngàn gói khác đang làm việc với Tidelift để cung cấp một đăng ký doanh nghiệp bao gồm tất cả các nguồn mở bạn sử dụng.

Tìm hiểu thêm.

Liên hệ bảo mật

Để báo cáo lỗ hổng bảo mật, vui lòng sử dụng liên hệ bảo mật Tidelift. Tidelift sẽ phối hợp sửa chữa và tiết lộ.

Cân nhắc về Bảo mật

Mỗi phụ trợ tích hợp có thể có những cân nhắc bảo mật để hiểu trước khi sử dụng thư viện này. Các tác giả của các công cụ hoặc thư viện sử dụng Keyring được khuyến khích xem xét những mối quan tâm này.keyring are encouraged to consider these concerns.keyring are encouraged to consider these concerns.keyring are encouraged to consider these concerns.

Như với bất kỳ danh sách các mối quan tâm bảo mật đã biết, danh sách này không đầy đủ. Các vấn đề bổ sung có thể được thêm vào khi cần thiết.

  • Keychain MacOS
    • Bất kỳ tập lệnh hoặc ứng dụng Python nào cũng có thể truy cập vào các bí mật được tạo bằng cách khóa từ cùng một Python có thể thực thi mà không cần hệ điều hành khiến người dùng đưa ra mật khẩu. Để gây ra bất kỳ bí mật cụ thể nào để nhắc mật khẩu mỗi khi được truy cập, hãy xác định thông tin đăng nhập bằng ứng dụng truy cập Keychain và trong cài đặt điều khiển truy cập, hãy xóa Python khỏi danh sách các ứng dụng được phép.keyring from that same Python executable without the operating system prompting the user for a password. To cause any specific secret to prompt for a password every time it is accessed, locate the credential using the Keychain Access application, and in the Access Control settings, remove Python from the list of allowed applications.keyring from that same Python executable without the operating system prompting the user for a password. To cause any specific secret to prompt for a password every time it is accessed, locate the credential using the Keychain Access application, and in the Access Control settings, remove Python from the list of allowed applications.keyring from that same Python executable without the operating system prompting the user for a password. To cause any specific secret to prompt for a password every time it is accessed, locate the credential using the Keychain Access application, and in the Access Control settings, remove Python from the list of allowed applications.

  • Freedesktop Secret Service
    • Không có phân tích nào được thực hiện

  • KDE4 & KDE5 KWALLET
    • Không có phân tích nào được thực hiện

  • KDE4 & KDE5 KWALLET
    • Không có phân tích nào được thực hiện

KDE4 & KDE5 KWALLET

Windows Ch dụng khóa thông tin

Phát hành

  • Dự án này sử dụng các bản phát hành tự động và tích hợp liên tục. Quy trình công việc đơn giản là gắn thẻ một cam kết và đẩy nó vào GitHub. Nếu nó vượt qua các bài kiểm tra trong CI, nó sẽ được tự động triển khai đến PYPI.

Những điều khác cần xem xét khi phát hành:

Kiểm tra xem Changelog là hiện tại cho bản phát hành dự định.

Chạy thử nghiệm

Các thử nghiệm liên tục chạy trong các hành động của GitHub.

Để chạy các bài kiểm tra cục bộ, cài đặt và gọi TOX.

Tải thêm tài liệu liên quan đến bài viết Hướng dẫn python keyring mac - móc khóa python mac