至此登录aws login sso成功。
Successully logged into Start URL: *****\nRun Code Online (Sandbox Code Playgroud)\n从这里我想启动我的服务,该服务需要设置以下带有 AWS 凭证的环境变量:
\nAWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_SESSION_TOKEN如何将这些变量提取到当前 shell 中?
\n我找到了一个可能适合我的解决方法:我注意到在我登录并运行后,aws sts get-caller-identity它会在目录中创建文件~/.aws,可以使用如下脚本对其进行解析:
#!/usr/bin/env bash\n\nset -e\n\nAWS_ACCESS_KEY_ID=$(cat ~/.aws/cli/cache/*.json | jq '.Credentials.AccessKeyId' --raw-output)\nAWS_SECRET_ACCESS_KEY=$(cat ~/.aws/cli/cache/*.json | jq '.Credentials.SecretAccessKey' --raw-output)\nAWS_SESSION_TOKEN=$(cat ~/.aws/cli/cache/*.json | jq '.Credentials.SessionToken' --raw-output)\n\n>&2 echo "\xe2\x9c\xa8 you need to eval output of this script in your current window:"\n>&2 echo ' eval $('$0')'\n>&2 echo ""\necho "export AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}"\necho "export …Run Code Online (Sandbox Code Playgroud) environment-variables command-line-interface amazon-web-services aws-sts aws-sso
有没有办法禁用使用 AWS SSO 登录的用户的编程访问?是否可以使用策略或组来控制编程和控制台访问?
我一直使用 aws 作为云服务,使用 terraform 作为 IaC。频繁复制粘贴凭证非常烦人。是否有任何可用的解决方案或任何解决其他问题以使用 aws sso 的方法?
通过 IAM Identity Center 管理对多个账户的访问时,AWS 访问门户为这些账户中的每个可用角色/权限集提供可单击的链接。但是,控制台始终加载到主页。有没有办法构建一个“深层链接”URL,以便单击它的(授权)用户将:
我知道可以为给定的 PermissionSet设置中继状态,但这还不够,因为我可能希望给定的用户从不同的链接重定向到不同的位置 - 也就是说,我希望在单击的内容中对目的地进行编码URL,不在 PermissionSet 的元数据中。为每个可能的目的地创建不同的 PermissionSet 是不切实际的。
这个博客似乎准确地描述了我想要实现的目标,但它对我不起作用 - 按照说明,我:
RPID=(url-encoded string of urn:amazon:webservices)&RelayState=(url-encoded destination url)?RelayState=)附加到我的 Access Portal 提供的一键登录然而,生成的 URL 只是让我登录并将我置于主页上,而没有任何重定向。
遗憾的是,该文章的所有链接似乎都已损坏。我还找到了这个页面,并尝试使用它来生成深层链接 - 再次,不走运,我刚刚登录到主页。
我确实注意到我的登录网址与示例不同 - 它们看起来像https://<domain>/adfs/ls/idpinitiatedsignon.aspx,而我的登录网址看起来像https://<internal-string>.awsapps.com/start/#/saml/custom/AAA/BBB,其中:
AAA是 url 编码的字符串account-number (account-nickname)BBB是一些引用主AWS帐户的base64编码数据的url编码,后跟两个我无法放置的(下划线分隔的)标识符 - 一个是 form ins-[alphanumerics],另一个是 formp-[alphanumerics]这是否意味着我的 ADFS 的配置与此功能预期的不同?还有办法实现我想要的吗?
编辑:我的网络管理员通知我,我们在内部使用 Azure AD,而不是 ADFS,这可能是 URL 格式不同的原因。
amazon-web-services amazon-iam aws-sso aws-iam-identity-center
当您在浏览器中通过 SSO 登录时,如果您打开一个帐户并担任某个角色,则单击“管理控制台”后会打开一个新选项卡。该链接的 url 语法类似于https://my-sso-portal.awsapps.com/start/#/saml/custom/my-account-name/base-64-string
如果您对 URL 中的 Base 64 字符串进行解码,您会发现有 3 个数字,其结构如下:number1 _ins- number2 _p- number3第一个数字是您的 AWS 组织编号,第二个数字标识账户,第三个数字是您的 AWS 组织编号。所承担的角色。
尽管我弄清楚了这个字符串的结构,但我仍然不知道用户是否可以获取第二个和第三个数字(当然,不使用 url)。我基本上想以编程方式构建该 url,但看起来这两个数字是 AWS 为自己保留的 ID,但我不确定。还有其他人对此了解更多吗?
我正在尝试允许用户在 AWS 上担任角色。我将代入角色策略附加到 IAM 用户所属的组,以便他们可以代入特定角色。问题是用户现在使用 SSO 登录,并且不再允许使用 IAM 用户凭证通过控制台登录,因此用户无法承担该角色。如何配置具有 SSO 登录的用户来承担现有 IAM 角色?当我创建假设角色策略时,我选择了 AssumeRole 和 AssumeRoleWithSaml。但它仍然不起作用。
这就是 AssumeRole 策略的样子
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"sts:AssumeRole",
"sts:AssumeRoleWithSAML"
],
"Resource": "arn:aws:iam::xxxxxxxxxxxx:role/service-role/KinesisFirehoseServiceRole--us-east-1-xxxxxxxxxxxxx"
}
]
Run Code Online (Sandbox Code Playgroud)
该角色的信任关系如下所示
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "firehose.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
Run Code Online (Sandbox Code Playgroud) 我有一个高度多帐户的环境,并且为每个帐户分配了多个权限集的用户。
例如,Bob 对于测试和生产帐户都具有管理员帐户和只读帐户。假设我只想删除 Bob 对 Prod 帐户的管理员访问权限,但保留他的只读权限,并保留管理员和只读权限集不变(因为 Alice 仍然是 Prod 中的管理员)。
如何在 IAM 身份中心执行此操作?唯一的选择似乎是删除权限集或禁用/删除用户。我不知道如何删除特定帐户的用户权限集。
amazon-web-services amazon-iam aws-sso aws-iam-identity-center
我想要启用 IAM Identity Center 并为现有 AWS 账户配置外部 IdP。此 AWS 账户已有使用 IAM 创建的用户。
这些用户会发生什么?
我特别担心我的应用程序使用的用户,例如访问 S3 存储桶。他们没有密码,只有访问密钥和秘密。配置外部 IdP 后,这些用户的密钥是否可以使用?
谢谢
amazon-web-services amazon-iam aws-sso aws-iam-identity-center
AWS SSO 与 Okta 相比,SSO 实施的最佳选择是什么?我专门寻找每种服务的优点和缺点,以确定最适合我的系统的服务。这些考虑因素最重要
成本
集成 - 支持与现有目录服务和移动/Web 应用程序(SAML、ADFS 等)集成
轻松访问日志进行审计
我正在尝试从 dbeaver 连接到 AWS Athena。文档表明我可以使用 AWS SSO https://dbeaver.com/docs/wiki/AWS-SSO来做到这一点。
我浏览了所有选项,但找不到这样的配置。我使用的是21.3.5版本。
我创建了一个新的 AWS SSO(使用内部 IDP 作为身份源,因此不使用 Active Directory)。
我能够登录 AWS CLI、AWS GUI,但无法执行任何 kubectl 操作。
error: You must be logged in to the server (Unauthorized)
Run Code Online (Sandbox Code Playgroud)
我认为这与 RBAC 有关,因为我可以通过
aws eks get-token.
? cat ~/.aws/config
[profile team-sso-admin]
sso_start_url=https://team.awsapps.com/start
sso_region=us-west-2
sso_account_id=1111111111
sso_role_name=AdministratorAccess
region=us-west-2
credential_process = aws-vault exec team-sso-admin --json
? aws-vault exec team-sso-admin --debug -- zsh --login
? env | grep AWS
AWS_VAULT_PROMPT=pass
AWS_VAULT_BACKEND=pass
AWS_VAULT=team-sso-admin
AWS_DEFAULT_REGION=us-west-2
AWS_REGION=us-west-2
AWS_ACCESS_KEY_ID=xxx
AWS_SECRET_ACCESS_KEY=xxx
AWS_SESSION_TOKEN=xxx
AWS_SECURITY_TOKEN=yyy
AWS_SESSION_EXPIRATION=2021-01-11T05:55:51Z
AWS_SDK_LOAD_CONFIG=1
? aws sts get-caller-identity --output yaml
Account: '111111111111' …Run Code Online (Sandbox Code Playgroud) aws-sso ×11
amazon-iam ×4
amazon-eks ×1
aws-sts ×1
browser ×1
dbeaver ×1
kubernetes ×1
okta ×1
policy ×1