从OKTA获取AWS角色凭据的资源
aws-okta-processor的Python项目详细描述
这个包提供了一个通过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命令 作为选项或环境变量,如下表所示。
Variable | Option | Environment Variable | Description |
---|---|---|---|
user | –user | AWS_OKTA_USER | Okta user name |
password | –pass | AWS_OKTA_PASS | Okta user password |
organization | –organization | AWS_OKTA_ORGANIZATION | Okta FQDN for Organization |
application | –application | AWS_OKTA_APPLICATION | Okta AWS application URL |
role | –role | AWS_OKTA_ROLE | AWS Role ARN |
duration | –duration | AWS_OKTA_DURATION | Duration in seconds for AWS session |
key | –key | AWS_OKTA_KEY | Key used in generating AWS session cache |
environment | –environment | Output command to set ENV variables | |
silent | –silent | Silence 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下。文件名是基于 user、organization和key选项值传递给命令。
如果要为每个假定使用相同的角色存储单独的aws角色会话缓存 user和organization选项值然后将唯一值传递给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/*
获取帮助
- 在slack上提问
- 如果你发现了一个bug,请open an issue
致谢
此包受AlainODea的影响 在okta-aws-cli-assume-role上工作。