从Okta获取AWS角色凭证的资源
项目描述
此软件包提供通过Okta获取AWS凭证的命令。
安装
安装aws-okta-processor的推荐方法是使用pipx。这样做的优点是,命令可以在您的shell中可用,无需激活虚拟环境,同时仍然将依赖项与其site-packages隔离开
$ pipx install aws-okta-processor
并且,要升级到新版本
$ pipx upgrade aws-okta-processor
您还可以在虚拟环境中使用pip进行安装
$ pip install aws-okta-processor
或者,如果您不在虚拟环境中安装,要全局安装
$ sudo pip install aws-okta-processor
或者为您的用户安装
$ pip install --user aws-okta-processor
如果您已使用pip安装了aws-okta-processor,并且想要升级到最新版本,可以运行以下命令:
$ pip install --upgrade aws-okta-processor
这将安装aws-okta-processor包及其所有依赖项。您也可以直接下载tarball。一旦您在您的台式机上有了aws-okta-processor目录结构,您只需运行以下命令:
$ cd <path_to_aws-okta-processor> $ python setup.py install
入门指南:
此软件包最好与AWS命名配置文件一起使用,与识别credential_process的工具和库。
要在配置文件中设置aws-okta-processor,创建一个如下所示的INI格式文件
[default] credential_process=aws-okta-processor authenticate --user <user_name> --organization <organization>.okta.com
并将其放置在~/.aws/credentials(或在Windows上的%UserProfile%\.aws/credentials)中。然后运行
$ pip install awscli $ aws sts get-caller-identity
输入密码,然后根据提示选择您的AWS Okta应用程序和账户角色。AWS CLI命令将返回一个显示假设的账户角色的结果。如果您再次运行AWS CLI命令,由于缓存,您将获得相同的角色而无需任何提示。
对于不识别credential_process的工具和库,aws-okta-processor可以运行以将以下内容作为环境变量导出
AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN
对于Linux或OSX运行:
$ eval $(aws-okta-processor authenticate --environment --user <user_name> --organization <organization>.okta.com)
在Unix系统上,传递一个–target-shell以更改导出命令的输出。Bash是默认的目标shell。我们还允许[fish shell](https://fishshell.com/)作为一个有效目标
$ eval (aws-okta-processor authenticate --environment --user <user_name> --organization <organization>.okta.com --target-shell fish)
对于Windows运行:
$ Invoke-Expression (aws-okta-processor authenticate --environment --user <user_name> --organization <organization>.okta.com)
其他可配置变量:
还可以将以下表格中概述的选项或环境变量传递给aws-okta-processors的authenticate命令。
变量: |
选项: |
环境变量: |
描述: |
---|---|---|---|
user: |
–user: |
AWS_OKTA_USER: |
Okta用户名: |
password: |
–pass: |
AWS_OKTA_PASS: |
Okta用户密码: |
organization: |
–organization: |
AWS_OKTA_ORGANIZATION: |
Okta组织FQDN: |
application: |
–application: |
AWS_OKTA_APPLICATION: |
Okta AWS应用程序URL: |
role: |
–role: |
AWS_OKTA_ROLE: |
AWS Role ARN: |
secondary_role: |
–secondary-role: |
AWS_OKTA_SECONDARY_ROLE: |
二级AWS Role ARN: |
account_alias: |
–account-alias: |
AWS_OKTA_ACCOUNT_ALIAS: |
AWS账户过滤器: |
region: |
–region: |
AWS_OKTA_REGION: |
AWS区域: |
duration: |
–duration: |
AWS_OKTA_DURATION: |
AWS会话持续时间的秒数: |
key: |
–key: |
AWS_OKTA_KEY: |
用于生成AWS会话缓存的密钥: |
environment: |
–environment: |
设置ENV变量的输出命令: |
|
silent: |
–silent: |
静默信息输出: |
|
factor: |
–factor: |
AWS_OKTA_FACTOR: |
MFA类型。支持push:okta,token:software:totp:okta,token:software:totp:google和token:hardware:yubico。 |
no_okta_cache: |
–no-okta-cache: |
AWS_OKTA_NO_OKTA_CACHE: |
不要读取Okta缓存: |
no_aws_cache: |
–no-aws-cache: |
AWS_OKTA_NO_AWS_CACHE: |
不要读取AWS缓存: |
target_shell: |
–target-shell: |
AWS_OKTA_TARGET_SHELL: |
格式化导出命令的目标shell: |
sign_in_url: |
–sign-in-url: |
AWS_OKTA_SIGN_IN_URL: |
AWS登录URL: |
示例:
如果您不希望aws-okta-processor提示任何选择输入,您可以导出以下内容:
$ export AWS_OKTA_APPLICATION=<application_url> AWS_OKTA_ROLE=<role_arn> AWS_OKTA_FACTOR=<factor_type>
或者向命令传递额外的选项:
$ aws-okta-processor authenticate --user <user_name> --organization <organization>.okta.com --application <application_url> --role <role_arn> --factor <factor_type>
缓存:
本软件包利用Okta会话和AWS会话的缓存。了解这种缓存工作原理有助于在尝试切换AWS角色时避免混淆。
Okta
当aws-okta-processor尝试进行身份验证时,它会检查~/.aws-okta-processor/cache/目录下名为<user>-<organization>-session.json的文件,该文件基于传递的user和organization选项值。如果文件不存在或会话内容已过时,aws-okta-processor将创建一个新的会话并将其写入到~/.aws-okta-processor/cache/。如果文件存在且会话未过时,则现有的会话将得到刷新。
AWS
aws-okta-processor与Okta建立会话并选择AWS角色后,将获取角色的密钥和会话令牌。来自AWS角色的此会话信息作为JSON文件缓存到~/.aws/boto/cache下。文件名是基于传递给命令的user、organization和key选项值组合的SHA1哈希。
如果您想为使用相同user和organization选项值的每个角色存储单独的AWS角色会话缓存,请传递一个唯一的key值。然后在~/.aws/credentials中定义不同角色的命名配置文件,内容如下
[role_one] credential_process=aws-okta-processor authenticate --user <user_name> --organization <organization>.okta.com --application <application_url> --role <role_one_arn> --factor <factor_type> --key role_one [role_two] credential_process=aws-okta-processor authenticate --user <user_name> --organization <organization>.okta.com --application <application_url> --role <role_two_arn> --factor <factor_type> --key role_two
要清除所有AWS会话缓存,请运行
$ rm ~/.aws/boto/cache/*
$ rm ~/.aws/boto/cache/*
假定二级角色
如果您只能从一个角色假定另一个角色,可以使用--role和--secondary-role同时假定这两个角色。使用--role指定第一个角色的ARN,然后使用--secondary-role指定从--role假定的角色的ARN。
示例
aws-okta-processor authenticate --user jdoe ... --role arn:aws:iam::111111111:role/OpsUser --secondary-role arn:aws:iam::111111111:role/SecretsAdmin
项目或用户配置
aws-okta-processor可以从用户主目录或当前工作目录中的.awsoktaprocessor文件继承参数。
.awsoktaprocessor
[defaults]
user=jdoe
[authenticate]
user=ssmith
在此示例中...
authenticate > user 覆盖 defaults > user
{workingDir}/.awsoktaprocessor 覆盖 ~/.awsoktaprocessor
aws-okta-processor 参数覆盖来自点文件的任何选项
获取角色
要获取角色,请使用get-roles命令。此命令支持以AWS配置文件、JSON或自定义格式化文本输出角色。
# write all the roles as AWS profiles
aws-okta-processor get-roles -u jdoe -o mycompany.okta.com --output=profiles > ~/.aws/credentials
# get account and role
aws-okta-processor get-roles -u jdoe -o mycompany.okta.com --output=text --output-format="{account},{role}"
# get JSON
aws-okta-processor get-roles -u jdoe -o mycompany.okta.com --output=json
输出类型
json(默认):以JSON格式输出
profiles:输出AWS配置文件以存储在~/.aws/credentials
text:使用--output-format和令牌的自定义格式化文本
输出格式令牌
{account}:账户名称
{account_id}:账户ID
{account_raw}:账户信息,如Okta网站上所见(Account: blah-blah(id))
{application_url}:完整的Okta应用程序URL
{organization}:提供的组织
{role}:角色 ARN
{role_suffix}:角色的最后一个元素(使用 AWS_OKTA_ROLE_SUFFIX_DELIMITER 或 - 分隔)
{user}:提供的用户
获取帮助
如果您发现可能存在错误,请创建一个问题
致谢
本软件包受到了AlainODea在okta-aws-cli-assume-role项目上的工作的启发。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装软件包的更多信息。
源分发
构建分发
aws_okta_processor-1.9.2.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d57a852ee20bd303e9cc0c84c846f423ae4d556bc1e8c99d1922e3ae8eb87cc7 |
|
MD5 | caddc4fc07c3a312ddf25624d0c65c3e |
|
BLAKE2b-256 | 467fb6e7bea7994bd8d54d964e2023f6966015709e5fb010cf81cc798a5b7a03 |
aws_okta_processor-1.9.2-py2.py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 92d5d5db6f511d461e35144311b467958eaa5fe2dc2838021da768592cc2b0f5 |
|
MD5 | 8531a7560506fc2690f250c76876a28e |
|
BLAKE2b-256 | 4a5150a2f0b7c41938b11122a3db79fa2c0dcef94a31c77226e57339ddfc34d4 |