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 |