この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちは。
ご機嫌いかがでしょうか。
"No human labor is no human error" が大好きな吉井 亮です。
IAM Access Analyzer 使っていますか~~(あいさつ)
外部エンティティからのアクセス可能性があるリソースを検出してくれる機能です。
追加料金は発生しないので、ご自身が管理している全てのアカウントで有効にしてしまいましょう。
CLI
マネジメントコンソールから Access Analyzer を有効にすることが可能ですが
全てのリージョンでの操作をマネジメントコンソールから行うと手間です。
CLI で一発で実行してしまいます。
実行するまえに 公式ドキュメント を参照して AWS CLI を最新バージョンにしておきましょう。
CLI を最新にしたら以下の bash スクリプトを作成して実行します。
変数 AANAME の値は任意に変更してください。
#!/bin/bash
AANAME=MyAccessAnalyzer
for reg in `aws ec2 describe-regions | jq -r '.Regions[] | .RegionName' | sort`
do
echo ${reg}
aws accessanalyzer create-analyzer --analyzer-name ${AANAME}-${reg} --type ACCOUNT --region ${reg}
done
exit 0
CloudFormation
CloudFormation テンプレートも作りました。
こちらは EventBridge ~ SNS ~ Email で通知までをセットアップします。
テンプレートは以下です。
AWSTemplateFormatVersion: '2010-09-09'
Description: Create Access Analzer
Parameters:
AnalyzerName:
Description: The name of the analyzer.
Type: String
Email:
Description: Email address to notify when finding analyzer
Type: String
Resources:
Analyzer:
Type: AWS::AccessAnalyzer::Analyzer
Properties:
AnalyzerName: !Ref AnalyzerName
Type: ACCOUNT
NotificationTopic:
Type: AWS::SNS::Topic
Properties:
Subscription:
- Endpoint: !Ref Email
Protocol: email
EventRule:
Type: AWS::Events::Rule
Properties:
EventPattern:
source:
- "aws.access-analyzer"
detail-type:
- "Access Analyzer Finding"
Targets:
- Arn: !Ref NotificationTopic
Id: AccessAnalyzer
EventTopicPolicy:
Type: AWS::SNS::TopicPolicy
Properties:
PolicyDocument:
Statement:
- Effect: Allow
Principal:
Service: events.amazonaws.com
Action: 'sns:Publish'
Resource: '*'
Topics:
- !Ref NotificationTopic
このテンプレートを実行するとパラメータを聞かれますので
ご自身の環境に合わせた値を入力お願いします。
パラメータ | 説明 |
---|---|
スタックの名前 | 識別しやすい名前。AccessAnalyzer など |
AnalyzerName | Analyzer の名称です。これも識別しやすいものを。{SystemName}-Analyzer など |
Analyzer 検出後の通知用メールアドレス |
参考
AWS CLI Command Reference
CloudFormation User Guide, AWS::AccessAnalyzer::Analyzer
re:Invent 2019 IAM Access Analyzerについて調べてみた #reinvent
以上、吉井 亮 がお届けしました。