こんにちは、AWS事業本部の木村です。
IAM Identity Center のユーザー作成について、Athenaを利用してクエリを行う機会がありましたので方法をご紹介したいと思います。
取得対象について
今回以下の情報を取得対象として、テーブルを作成していきたいと思います。
- 作成された時刻
- 作成したユーザーID
- 作成されたアカウントのID
テーブルの作成
ではAthenaで、早速テーブルを作成していきたいと思います。 <>内は適宜自分の環境に置き換えを行なってください。
CREATE EXTERNAL TABLE `<テーブル名>` (
userIdentity STRUCT<
arn: STRING,
accountId: STRING>,
eventTime STRING,
eventName STRING,
responseElements STRING
)
PARTITIONED BY (
`account` string,
`date` string
)
ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe'
STORED AS INPUTFORMAT 'com.amazon.emr.cloudtrail.CloudTrailInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION 's3://<ログ保管先>'
TBLPROPERTIES (
'projection.enabled' = 'true',
'projection.date.type' = 'date',
'projection.date.range' = '2023/01/01,2100/12/31',
'projection.date.format' = 'yyyy/MM/dd',
'projection.date.interval' = '1',
'projection.date.interval.unit' = 'DAYS',
'projection.account.type' = 'enum',
'projection.account.values' = '<アカウントID>',
'storage.location.template' = 's3://<ログ保管先>/${account}/CloudTrail/ap-northeast-1/${date}',
'compressionType'='gzip',
'typeOfData'='file',
'classification'='cloudtrail'
);
以上でテーブルを作成してください。
クエリの実行
テーブルを作成したら、以下でクエリを実施します。
SELECT * FROM <テーブル名>
where eventname = 'CreateUser'
and date BETWEEN '2023/11/01' AND '2023/11/18';
実行すると以下の様に情報を取得できます。
ユーザー情報の取得
CloudTrailで取得できる情報にはユーザーの名前などの情報を拾うことはできないので、ユーザーの詳細の情報を取得したい際にはCLIでの情報の取得が必要となります。
取得したいユーザーIDを含めて以下で実行してください。
USER_ID="<先ほど取得したユーザーのID>"
STORE_ID="<StoreID>"
aws identitystore describe-user --output text \
--identity-store-id ${STORE_ID} \
--user-id ${USER_ID}
StoreIDは以下で取得できます。
aws sso-admin list-instances --query "Instances[0].IdentityStoreId"
まとめ
比較的簡単に設定できますので、アカウント作成は各チーム任せているけれども運用チームとしても作成状況をトラッキングできる様にしたいといった時に活用していただければと思います。
この記事がどなたかの参考になれば幸いです。