跳转到主要内容

Python YubiKey AWS签名库

项目描述

Exile 将您的AWS访问密钥存储在YubiKey设备上,并使用它来签名您的AWS API请求,保护您免受凭证盗窃。

安装

pip install exile

在Linux上,安装 pcsc-liteapt install pcscdyum 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))

作者

  • Andrey Kislyuk

错误

请将错误、问题、功能请求等报告到GitHub

许可证

根据Apache许可证第2版的条款进行许可。

https://img.shields.io/travis/com/pyauth/exile.svg https://codecov.io/github/pyauth/exile/coverage.svg?branch=master https://img.shields.io/pypi/v/exile.svg https://img.shields.io/pypi/l/exile.svg https://readthedocs.org/projects/exile/badge/?version=latest

项目详细信息


下载文件

下载适用于您的平台文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

exile-0.1.1.tar.gz (17.2 kB 查看哈希值)

上传时间

构建分布

exile-0.1.1-py2.py3-none-any.whl (17.7 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下支持