我有一个 AWS 多账户设置,我使用 IAM Identity Center 来管理用户和控制访问。我正在使用托管 AWS 角色来授予仅查看访问权限。当我登录到其中一个帐户(我们称之为prod)时,我希望能够使用 STS 来承担另一个帐户中的角色(我们称之为shared)。
为此,我需要设置一个 IAM 角色来shared授予适当的访问权限,并拥有允许我这样做的信任策略。最初我是从这个开始的(有效):
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<prodAccountID>:root"
},
"Action": "sts:AssumeRole",
}
]
}
Run Code Online (Sandbox Code Playgroud)
如何将该主体从任何来源更改prod为仅通过 SSO 登录并具有特定角色的主体?
举个例子:
$ aws sts get-caller-identity
{
"UserId": "<some-id>:<username>",
"Account": "<prodAccountID>",
"Arn": "arn:aws:sts::<prodAccountID>:assumed-role/AWSReservedSSO_view-only_9ec0318096f8cdd9/<username>"
}
Run Code Online (Sandbox Code Playgroud)
我希望任何有这个AWSReservedSSO_view-only_9ec0318096f8cdd9角色的人都能够担任这个角色。
我遇到了一些奇怪的权限被拒绝错误,我不知道这些错误可能来自哪里。
$ go run .
Hello from go
Run Code Online (Sandbox Code Playgroud)
$ make run
go run .
make: go: Permission denied
make: *** [Makefile:2: run] Error 127
Run Code Online (Sandbox Code Playgroud)
$ make run2
echo "Make says hello" ; go run .
Make says hello
Hello from go
Run Code Online (Sandbox Code Playgroud)
$ cat Makefile
run:
go run .
run2:
echo "Make says hello" ; go run .
Run Code Online (Sandbox Code Playgroud)
$ cat main.go
package main
import "fmt"
func main() {
fmt.Println("Hello from go")
}
Run Code Online (Sandbox Code Playgroud)
我的终端是在 Ubuntu 22.04 上运行的 bash。
我的目标和直接运行 go 之间有什么区别run …