AWSの下回りの技術を調べてみる
ECSやLambdaといった、実際にアプリケーションを動かすようなものではなく、
ログや監査、制限などの下回りの技術について、改めて調べてみる。
AWS アカウントエイリアス
IAMでのコンソールログイン時に、
https://Your_Account_Alias
.signin.aws.amazon.com/console/
のように、名称を含めたURLにできる。
IAM Access Analyzer
参考資料
checkingの機能。
定期的に権限設定をチェックしてくれ、外部からのアクセスが可能になった場合には「アクティブ」としてマークしてくれる。
ただし、単体では通知はできないので、 Amazon EventBridge -> Amazon SNS といった流れを利用するらしい。
例えば、
IAM roleに対して、Switch roleできる権限があるとか、
S3に対して、アクセスが可能になっていたり。
(具体的には、よくわからなかった)
設定自体は、かんたんなので、とりあえず有効にしておくのが良さそう。
Amazon EventBridge
EventBridge は Amazon CloudWatch Events の新しいバージョンです。
CloudWatch Events と同じと思って良さそう。
AWS上のイベントに反応して、別のサービス(SNSとか)を起動したり。
外部SaaSのイベントに反応することもできそう。(例としては、ZendeskやShopifyなどが挙げられている)
一つ前の "IAM Access Analyzer" と、 EventBridgeをつなげて、それをAmazon SNSで通知する設定例。
Amazon S3 パブリックアクセスブロック
アカウント単位で、S3へのパブリック・アクセスを防ぐことができる。
既存のバケット、新規に作るバケットの療法をチェックできる。
AWS CloudTrail
AWS上のユーザ(IAMアカウントなど)の動作に対してログを保存しておくことができる。(監査目的が多そう?)
また、一部のサービスに対しては、より詳細な「データイベント」を保存しておく事もできる。
例えば、「S3のオブジェクトが追加された」、「Lambdaが実行された」など。
ログは、CloudTrails自体(CloudTrail console?)とS3に保存される。
CloudWatch Logsに転送することもでき、ここから通知なども行える。
AWS Key Management Service (KMS)
暗号化キーを作成できる。
ここで作成したキーを利用して、RDSやCloudTrailなどのデータ保存の際の暗号化を行うことができる。
IAM policyを設定した上で作成するので、利用できる箇所を限定できる。
AWS CloudTrail によって、利用されたタイミングを確認できる。
KMS自体についての、わかりやすい解説
Service-Linked Roles
解説記事
例えば、EC2のAutoScalingではスケールアウト/インのトリガーにCloudWatchアラームを利用しています。
このように「そのサービスから他のAWSサービスを呼び出す」ためのIAMロールのことを「Service-Linked Role」、「サービスにリンクされたロール」と言います。
マネジメントコンソール上から作る場合には、勝手に作成されるもの。
Terraformなどでリソースを作成した場合には、 aws_iam_service_linked_role
で作成しておくのが良さそう。
AWS Config
AWS リソースの設定変更を継続的にモニタリングして記録できます。
CloudTrailと似ているが、
AWS Config は AWS CloudTrail とどのように連携しますか?
をみると、CloudTrailは「操作のログ」であり、AWS Configは「設定値スナップショットとそのモニタリング」と理解しました。
大量のマネージドルールがあり、それらをまとめた「適合パック」も大量にある。
ルールを設定しておくことで、違反したものの通知などが行える。
また、Configのダッシュボードより、特定のリソースに対する設定の履歴などを閲覧することができる。
(EC2インスタンスが、いつ削除されたのか?など)
参考
Amazon GuardDuty
AWS CloudTrail イベント、Amazon VPC フローログと DNS ログデータをチェックして、脅威を検出する。
悪意のある外部からの操作や、異常なAPIコールなどを検出してくれる。
AWS Budgets
("Cost Management" の配下)予算を設定しておいて、それを超えた(もしくは超えそう)な場合にアラートを発信できる。
昔は、CloudWatch Alermを利用していたようですが、専用のサービスができたようです。
EC2やS3などのリソース単位で予算を設定したり、カスタムの期間単位で設定できたりする。