IAM Access Analyzer を一発で有効にしてみた #reinvent
こんにちは。
ご機嫌いかがでしょうか。
"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
以上、吉井 亮 がお届けしました。