[AWS] AWSのセキュリティサービス一覧まとめ:かんたんな説明付き
AWSのセキュリティサービス一覧をパッと見てわかる役割とともにまとめてみた。
ソリューション名 | 役割 |
AWS Shield | DDOS対策ソリューション |
AWS WAF | 文字通りWAF(Web Application Firewall)。SQLインジェクションなどのWEBサーバに対する外部攻撃を防御 |
AWS GuardDuty | AWSアカウントやAWS環境に対する脅威検知サービス ペネトレーションテストなどを実施する際にはTrusted IPを登録しておくと該当IPからのアクセスは対象外とすることができる |
KMS (Key Management Service) |
暗号ソリューション。暗号に使用した鍵(マスターキー)管理も行ってくれる 既存鍵のImportも可能。FIPS14o-2 Level2に準拠、SSE-KMSとも呼ばれる CMKはリージョンを超えることはできない KMSで生成されたカスタマー管理CMKは1年でローテーション AWS管理CMKは3年でローテーション ユーザがインポートしたカスタマー管理CMKはローテーションできないので自分でやる |
CloudHSM | ハードウェアセキュリティモジュール:HSM、FIPS14o-2 Level3に準拠 VPC内にインスタンスとして導入。SSE-HSMとも呼ばれる 耐タンパー性(タンパーエビデンス)あり |
S3 | SSE-S3(Server Side Encryption)と呼ばれる自動的に暗号化してくれる設定が可能。暗号化していないデータをアップロードさせないポリシーも書くことができる 静的WEBサイトをホストすることもでき、CloudFrontを前段に配置、指定Cloudfrontからの通信のみ(OAI: origin access identity指定)を受け付ける構成をとることもできる アクセスログをCloud Watch Logsに吐く設定もできる。 バケットポリシーのResourceのARN(例:arn:aws:s3:::Bucket/*)の最後の「*」を忘れないように |
AWS Inspector | 対象にInspectorエージェントをインストールすることでAWSリソースが脆弱性を持っていないか診断してくれる。診断にはある程度時間がかかる。 |
AWS Trusted Adviser | AWSリソース全般においてクラウドセキュリティガイドライン(CIS)に乗っ取って監査をしてくれる。 どのリソースをどのようにして設定修正すればよいのかもアドバイスしてくれる |
Cloud Trail | AWSリソースのAPI記録をすべて取得しS3にアップロードしてくれる。KMSのAPI Call LogはCloud Trail経由になる 複数のRegionのAPI記録を一つのS3バケットに集約することも可能。 Cloud TrailのDefault設定でデータのIntegrity確認と暗号化が設定可能 CloudTrail自体のログ保管期間は90日 |
Cloud Watch Logs | ロギングサービス Ec2インスタンスにエージェントをインストールすることでApplicationのログもCloud Watch Logsに転送することができる。 |
Cloud Watch Event | |
AWS Config | AWSリソースの設定状態を記録し、これまでの設定変更履歴を見ることができる。Configの状態をフックしてLambdaをCallすることも可能。 設定情報だけでなく、そのインスタンスがどのAMIイメージから起動されたものなのかも知ることができる。 |
Lambda | サーバレスで動作するプログラムを書くことができる。セキュリティ部分についてはCloud Watch LogsやEvent、Configなどと連携して、指定のMetricやEventで発砲した際にEC2などの設定修正を自動で行う仕組みが作れる |
VPC Flow Logs | VPC内のトラフィックをログをすべて取得(送信元、送信先、通信プロトコルなど) ただし通信の中身は見ることができず、パケットキャプチャを行うにはEC2インスタンスに3rd PartyのソフトをインストールするかProxyなどで見るしかない |
Cloud Front | S3やLoadbalancer、Ec2の前段に配置して、コンテンツをキャッシュ。大量のリクエストが発生してもCloudFrontで吸収させ、ホストの負担を軽減できる ACM(AWS Certification Manager)と連携することで、簡単にSSL通信を実装することも可能。その場合のCertigiration managerのregionはUS East (Virginia)となる 証明書のインポートもできるが2048bitの証明書まで |
Cloud Front Lambda@Edge | Cloud Front Lambda@Edgeはエッジでのコンテンツのカスタマイズができる機能 HTTPセキュリティヘッダーに「X-XSS-Protection」を付与すること等ができる |
Amazon Athena | S3をデータレイクとして情報検索を行うことができる。Log精査などにも使用可能 Amazon Athenaを使用する際のIAMポリシーはAthenaとS3へのアクセス許可をつけておくこと。 |
Amazon Macie | データの中に個人情報(PII)などが存在していることを機械学習などで検知することができる |
AWS Artifact | AWSのコンプライアンス適用状況などを見ることができるドキュメント集 |
Amazon Cognito | ウェブアプリケーションやモバイルアプリケーションの認証、認可、ユーザ管理をサポート IDプロバイダーで連携させることで認可を行う機能 ユーザプールからのSAML IDプロバイダーとしてサインインさせることもできる |
Security Group | Ec2インスタンスにアタッチできる簡易FW 宛先、送信元、ポート番号などで通信の許可・不許可を設定可能 ステートフルなので、行きが許可されれば、帰りのルールが明示されていなくても帰りのトラフィックは許可される |
AWS NACL | Networkセグメントにアタッチできるネットワーク制御機能 宛先、送信元、ポート番号などで通信の許可・不許可を設定可能 ステートレスなので、行きが許可されていても、帰りが許可されていなければ帰りはブロックされる ルールは1NACLあたりInbound:20,Outbound:20ルールが設定できる |
VPC | 仮想ネットワーク。VPCはAvailability Zoneをまたいで作成することができ、VPC内にネットワークサブネットを作成できる 基本的にVPCで稼働しているインスタンスはVPCで提供されているDNSを参照するようになっているが、任意でDisableにすることもできる |
DynamoDB | AWSのマネージドデータベース DynamoDB Java encryption clientで入力値を暗号化できる |
Secrets Manager | ID/パスワードや認証情報の管理サービス Systems Manager Parameter Storeとの違いはCredencialの自動更新が可能。 RDS for MySQL、PostgreSQL、AuroraのDB接続情報(Credencial)の自動更新が必要なのであればこちらを利用する |
Systems Manager Parameter Store | アプリケーションで使用するCredencialなどコードに直接書かない方がよいデータやパラメータを保管して、必要によって呼び出すことができる。KMSで暗号化したデータを格納することも可能、その場合はKMSへのアクセスポリシーはSystems Managerではなく、Systems Managerから値を呼び出して実際に復号化するアプリケーションのロールになる。 無料でストアできるパラメータは10,000で、Secrets managerよりも安価である |
Systems Manager | Ec2インスタンスにエージェントをインストールすることで、遠隔でコマンドをrunさせることができる セキュリティの場面では、自動パッチ当てなど |
Certificate Manager Private Certificate Authority(ACM PCA) | 自社のプライベート CA を運用するための先行投資や継続的なメンテナンスにコストをかけずに、アベイラビリティの高いプライベート CA を提供。オレオレ証明書ではなくプライベートCAで作成した証明書を払い出してInternalトラフィックもセキュアにできる |
AWS PrivateLink | 自分のVPCのNLB配下のWEB等のサービスを、同一リージョン内の他のVPCに公開できるサービス。 VPC Peering等と異なり、IPアドレスレンジの重複等の考慮が不要 AWS内に閉じた安全なNW接続を実現できる。 |
EBS | Ec2にアタッチできる永続ボリューム。EBSをKMSで暗号化することができる。 暗号化したEBSをEc2にアタッチしてブートしたい場合、Ec2に下記IAMポリシーを書いておく必要がある Action: kms:CreateGrant , “Condition”: { “Bool”: { “kms:GrantIsForAWSResource”: true } } 書かないと起動しない |