Amazon web services 从CLI或SDK获取AWS IAM策略访问顾问记录
我正在审查过去N天内未使用的IAM策略和角色 在控制台中,我可以在Access Advisor下轻松查看最近的使用情况 我希望以自动化的方式获得相同的结果,但我找不到任何关于使用CLI或SDK获得此结果的文档Amazon web services 从CLI或SDK获取AWS IAM策略访问顾问记录,amazon-web-services,boto3,amazon-iam,aws-cli,Amazon Web Services,Boto3,Amazon Iam,Aws Cli,我正在审查过去N天内未使用的IAM策略和角色 在控制台中,我可以在Access Advisor下轻松查看最近的使用情况 我希望以自动化的方式获得相同的结果,但我找不到任何关于使用CLI或SDK获得此结果的文档 这可能吗?据我所知,不可能。您可能会幸运地找到一种方法,可以使用Selenium来自动化该过程,但这是一个漫长的解决方法 使用CloudTrail也没有这样的运气。我能找到的最接近的事情是上次更新策略的时间 希望亚马逊能考虑到这一点。我已经联系过他们了 Netflix有一个名为Aardva
这可能吗?据我所知,不可能。您可能会幸运地找到一种方法,可以使用Selenium来自动化该过程,但这是一个漫长的解决方法 使用CloudTrail也没有这样的运气。我能找到的最接近的事情是上次更新策略的时间
希望亚马逊能考虑到这一点。我已经联系过他们了 Netflix有一个名为Aardvark的工具,可以从控制台中获取Access Advisor数据。你可能想看看这个
现在可用,请查看下面的链接
这可以使用AWS SDK实现。 版本:
- aws cli/2.0.61
- go1.15.3 linux/amd64
让我们在Golang使用正确的导入进行此操作
import (
"fmt"
"github.com/aws/aws-sdk-go/aws"
"context"
"github.com/aws/aws-sdk-go-v2/config"
"github.com/aws/aws-sdk-go-v2/service/iam"
)
首先,要初始化会话和客户端:
cfg, err := config.LoadDefaultConfig()
svc := iam.NewFromConfig(cfg)
然后,您需要获得一个角色列表,以遍历所有角色名。您还可以使用特定的角色名称,因为这是获取LastUsedDate唯一需要的:
roles_iam, err := svc.ListRoles(context.Background(), &iam.ListRolesInput{
PathPrefix: aws.String("/")})
if err != nil {
fmt.Println("Error", err)
return
}
/** For simplicity and less dereferencing: more execution speed **/
roles_list := roles_iam.Roles
最后,如果需要获取所有角色的LastUsedDate,请迭代循环。只需使用正确的GetRoleInput参数设置输入,然后调用svc.GetRole以获取包含信息的结构
/** Declare slice 'unused_roles' containing string unused role names **/
var unused_roles []string
for i := range roles_list {
role_name := *roles_list[i].RoleName
input := &iam.GetRoleInput{
RoleName: aws.String(*roles_list[i].RoleName),
}
role_info, err := svc.GetRole(context.Background(), input)
if err != nil {
fmt.Println("Error", err)
}
/** Check if role has never been used **/
if (role_info.Role.RoleLastUsed.LastUsedDate) == nil {
fmt.Printf("Role %s has never been used\n", role_name)
unused_roles = append(unused_roles, role_name)
continue
}
last_used_date := *role_info.Role.RoleLastUsed.LastUsedDate
}
更多信息:
我不知道这个存在。我去看看!非常方便!坦白地说,我也不知道这存在。很高兴终于有了一个api可以处理这个问题。