Python YubiKey AWS签名库
项目描述
Exile 将您的AWS访问密钥存储在YubiKey设备上,并使用它来签名您的AWS API请求,保护您免受凭证盗窃。
安装
pip install exile
在Linux上,安装 pcsc-lite (apt install pcscd,yum install pcsc-lite)。
Exile需要Python 3.6+。
摘要
import boto3, botocore.auth
from exile import YKOATH, botocore_signers
def write_active_aws_key_to_yubikey():
credentials = boto3.Session().get_credentials()
key_name = "exile-{}-SigV4".format(credentials.access_key)
secret = b"AWS4" + credentials.secret_key.encode()
print("Writing YubiKey OATH SigV4 credential", key_name, "for", credentials.access_key)
YKOATH().put(key_name, secret, algorithm=YKOATH.Algorithm.SHA256)
key_name = "exile-{}-HmacV1".format(credentials.access_key)
secret = credentials.secret_key.encode()
print("Writing YubiKey OATH HmacV1 credential", key_name, "for", credentials.access_key)
YKOATH().put(key_name, secret, algorithm=YKOATH.Algorithm.SHA1)
write_active_aws_key_to_yubikey()
botocore_signers.install()
print("Using YubiKey credential to perform AWS call")
print(boto3.client("sts").get_caller_identity())
print("Using YubiKey credential to presign an S3 URL")
print(boto3.client("s3").generate_presigned_url(ClientMethod="get_object", Params={"Bucket": "foo", "Key": "bar"}))
将密钥存储在YubiKey上而不是在主目录(~/.aws/credentials)中,可以在主机计算机或其文件系统被破坏的情况下保护它。YubiKey充当HSM,并且可以选择进一步配置以在签名请求时需要用户交互(按按键)。
YKOATH().put(key_name, secret, algorithm=YKOATH.Algorithm.SHA256, require_touch=True)
TOTP
因为exile使用YubiKey OATH协议,您还可以使用它来存储TOTP 2FA令牌,生成和验证代码
from exile import TOTP TOTP().save("google", "JBSWY3DPEHPK3PXP") # Or TOTP.save_otpauth_uri("otpauth://...") TOTP().get("google") # Returns a standard 6-digit TOTP code as a string TOTP().verify("260153", label="google", at=datetime.datetime.fromtimestamp(1297553958))
链接
错误
请将错误、问题、功能请求等报告到GitHub。
许可证
根据Apache许可证第2版的条款进行许可。
项目详细信息
下载文件
下载适用于您的平台文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分布
exile-0.1.1.tar.gz (17.2 kB 查看哈希值)
构建分布
exile-0.1.1-py2.py3-none-any.whl (17.7 kB 查看哈希值)
关闭
exile-0.1.1.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a3171b8bfd97c389acb561337582d91d44d4d7846f0f4bea63a8179b890b1b14 |
|
MD5 | 4f8206c1f7bda6534f14c1c249d37cf2 |
|
BLAKE2b-256 | 96ebdce3160acf6982650d1ff5892f84fdf60b14eaba5cb88215a9843dc31712 |
关闭
exile-0.1.1-py2.py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2f1789ada8e6af0c59a5337647576d0277a285bea08c98ac6fec58861510d18d |
|
MD5 | 590ecaa907f4d2ce992f8d017b021ba6 |
|
BLAKE2b-256 | 3bf33d881e8283b3ffd9192840c9a2e610b975f0e99e8add4bb3431173070eff |