Веб-Сервисы Amazon – Как Узнать, Когда Роль Aws Iam Использовалась В Последний Раз?

  • Автор темы Аноним
  • Обновлено
  • 22, Oct 2024
  • #1

В AWS в графическом интерфейсе вы можете выбрать роль, а затем нажать «Удалить», а затем, когда вам будет предложено одобрить или отклонить удаление, вам будет показано, когда роль использовалась в последний раз.

Я хотел бы иметь возможность знать, когда роль в последний раз использовалась, не притворяясь, что она удаляется через графический интерфейс. В идеале, если бы я мог получить эти данные из AWS CLI или скрипта Boto3, это было бы здорово. Есть ли способ добиться этого?

#amazon-web-services #aws-cli

Аноним


Рег
02 Oct, 2014

Тем
77

Постов
207

Баллов
642
  • 25, Oct 2024
  • #2

Amazon CloudTrail отслеживает все использование API

В CloudTrail создайте новый след.

Вы можете настроить каждый журнал для отправки событий журнала в CloudWatch: отредактируйте журнал и выберите отправку журналов в CloudWatch. Он предложит вам создать роль для этого.

https://docs.aws.amazon.com/awscloudtrail/latest/userguide/monitor-cloudtrail-log-files-with-cloudwatch-logs.html

Затем выполните несколько вызовов для своей роли и подождите 5 минут.

В Cloudwatch перейдите к журналу и найдите «AssumedRole». Здесь будут показаны ваши мероприятия

Также есть документация по поиску логов Cloudwatch с фильтрами через API. https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/SearchDataFilterPattern.html

 

Shurshik


Рег
17 Oct, 2006

Тем
77

Постов
185

Баллов
600
  • 25, Oct 2024
  • #3

Это возможно с помощью AWS SDK.

После завершения этой задачи я чистил вкладки и решил написать ответ, чтобы помочь другим людям.

Версии:

  • aws-cli/2.0.61

  • go1.15.3 Linux/AMD64


Давайте сделаем это в Golang с правильным импортом.

#! /bin/bash

ROLES=$(aws iam list-roles | jq -r .Roles[].Arn)
for ROLE in $ROLES
do 

echo $ROLE

JOBID=$(aws iam generate-service-last-accessed-details --arn $ROLE | jq -r .JobId)

echo $JOBID

NAMESPACES=$(aws iam get-service-last-accessed-details --job-id $JOBID | jq -r .ServicesLastAccessed[].ServiceNamespace)

for NAMESPACE in $NAMESPACES

do  

echo $NAMESPACE

aws iam get-service-last-accessed-details-with-entities --job-id $JOBID --service-namespace $NAMESPACE | jq '.JobCompletionDate,.EntityDetailsList[].EntityInfo.Name,.EntityDetailsList[].EntityInfo.Id'

done    
done 

Сначала вы хотите инициализировать сеанс и клиент:

 
 
 
 aws iam get-service-last-accessed-details-with-entities 

Затем вы хотите получить список ролей для перебора всех имен ролей. Вы также можете использовать определенное имя роли, потому что это единственное, что вам нужно для получения LastUsedDate:

aws iam generate-service-last-accessed-details

Наконец, выполните итерацию по циклу, если вам нужно получить 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 }

Дополнительная информация:

https://docs.aws.amazon.com/IAM/latest/APIReference/API_Role.html

https://docs.aws.amazon.com/IAM/latest/APIReference/API_RoleLastUsed.html

 

Asparora


Рег
31 Mar, 2007

Тем
59

Постов
194

Баллов
529
  • 25, Oct 2024
  • #4

В настоящее время не существует метода использования SDK для AWS CLI, чтобы получить время последнего доступа к роли IAM.

В настоящее время единственный способ — использовать Консоль управления AWS.

  1. Выберите свой Роль IAM и исследуй это
  2. Нажмите кнопку "Советник по доступу"Вкладка.
  3. Содержимое этой вкладки будет отображать время последнего доступа для каждой из различных служб.

 

Avlbk


Рег
29 Jul, 2020

Тем
72

Постов
199

Баллов
579
  • 25, Oct 2024
  • #5

Я собирался вернуться к этому.

После консультации со службой поддержки AWS выяснилось, что это возможно с использованием некоторых функций AWS CLI, о которых я не знал. 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 and cfg, err := config.LoadDefaultConfig() svc := iam.NewFromConfig(cfg) В частности, они рекомендовали использовать https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor-view-data.html#access_policies_access-advisor-viewing-cli.

и они направили меня к

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" )
 

Nerry


Рег
26 Mar, 2007

Тем
59

Постов
199

Баллов
544
Похожие темы Дата
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно