从OKTA获取AWS角色凭据的资源

aws-okta-processor的Python项目详细描述


Latest VersionBuild StatusCoverage

这个包提供了一个通过okta获取aws凭据的命令。

安装

安装aws okta处理器的最简单方法是在virtualenv

中使用pip
$ pip install aws-okta-processor

或者,如果不是在virtualenv中安装,则全局安装:

$ sudo pip install aws-okta-processor

或为您的用户:

$ pip install --user aws-okta-processor

如果您安装了aws cli并希望升级到最新版本 您可以运行:

$ pip install --upgrade aws-okta-processor

注意

在OSX上,如果你看到一个关于随附的6版本的错误 El Capitan中的distutils,使用--ignore-installed选项:

$ sudo pip install aws-okta-processor --ignore-installed six

这将安装aws okta处理器包以及所有依赖项。你可以 也只是download the tarball。一旦你有了 aws okta处理器目录结构在您的工作站上,您只需运行:

$ cd <path_to_aws-okta-processor>
$ python setup.py install

开始

这个包最好用在AWS Named Profiles 使用能够识别credential_process的工具和库。

要在配置文件中设置aws okta处理器,请创建一个ini格式的文件,如下所示:

[default]
credential_process=aws-okta-processor authenticate --user <user_name> --organization <organization>.okta.com

把它放在~/.aws/credentials(或 %UserProfile%\.aws/credentials在Windows上)。然后运行:

$ pip install awscli
$ aws sts get-caller-identity

提供密码,然后在提示时选择您的aws okta应用程序和帐户角色。 aws cli命令将返回显示假定帐户角色的结果。如果你运行 再次使用aws cli命令,由于缓存的原因,您将在没有任何提示的情况下获得相同的角色。

对于不识别credential_processaws okta处理器的工具和库 可以运行以将以下内容导出为环境变量:

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)

对于Windows运行:

$ Invoke-Expression (aws-okta-processor authenticate --environment --user <user_name> --organization <organization>.okta.com)

其他可配置变量

其他变量也可以传递给aws okta处理器authenticate命令 作为选项或环境变量,如下表所示。

VariableOptionEnvironment VariableDescription
user–userAWS_OKTA_USEROkta user name
password–passAWS_OKTA_PASSOkta user password
organization–organizationAWS_OKTA_ORGANIZATIONOkta FQDN for Organization
application–applicationAWS_OKTA_APPLICATIONOkta AWS application URL
role–roleAWS_OKTA_ROLEAWS Role ARN
duration–durationAWS_OKTA_DURATIONDuration in seconds for AWS session
key–keyAWS_OKTA_KEYKey used in generating AWS session cache
environment–environmentOutput command to set ENV variables
silent–silentSilence Info output

示例

如果不希望aws okta处理器提示输入任何选择,可以导出以下内容:

$ export AWS_OKTA_APPLICATION=<application_url> AWS_OKTA_ROLE=<role_arn>

或将其他选项传递给命令:

$ aws-okta-processor authenticate --user <user_name> --organization <organization>.okta.com --application <application_url> --role <role_arn>

缓存

这个包利用了okta会话和aws会话的缓存。有助于 了解此缓存如何工作,以避免在尝试在aws角色之间切换时出现混淆。

Okta

当aws okta处理器尝试身份验证时,它将检查~/.aws-okta-processor/cache/ 对于基于user和^{tt11}的名为<user>-<organization>-session.json的文件$ 传递了选项值。如果找不到文件或会话内容已过时,则 aws okta处理器将创建一个新会话并将其写入~/.aws-okta-processor/cache/。 如果文件存在且会话不陈旧,则现有会话将被刷新。

aws

在aws okta处理器与okta进行会话并选择aws角色后,它将获取 角色的密钥和会话令牌。来自aws角色的会话信息被缓存为 json文件在~/.aws/boto/cache下。文件名是基于 userorganizationkey选项值传递给命令。

如果要为每个假定使用相同的角色存储单独的aws角色会话缓存 userorganization选项值然后将唯一值传递给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> --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> --key role_two

要清除所有AWS会话缓存,请运行:

$ rm ~/.aws/boto/cache/*

获取帮助

致谢

此包受AlainODea的影响 在okta-aws-cli-assume-role上工作。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何从eclipse更改浏览器中文本的显示语言   Java 8 Update 91 Web Start应用程序启动延迟较长   java新运算符返回null   java Jackson JSON翻译   java从文件txt转换为arraylist   java JavaMail与ApacheJames邮件服务器   java Spring启动无法启动   java如何使用持续提示用户的Dowhile循环?   java如何将python模块添加到jython/lib?   java如何从具有给定元素的数组中生成随机整数?   selenium RC中的java javascript   对话框从Java向Google Assistant发送请求   java在导航到页面时从网络获取所有请求名称和代码   java数据库中的数据如何在不同的活动中分配给数组?   java如何将二进制文件打包、压缩和部署为zip/tar。gz从github回购协议与maven/travis到bintray。通用回购协议   为什么Java的BigInteger有10和1作为常量?有实际用途吗?   java RecycleServiceAdapter OnBindViewHolder具有空ID   java Eclipse无法识别代码中的更改   java Graphhopper从装载的obb文件系统加载路由信息时出错