Cloud OptixによるAWS設定のアラート管理

Cloud Optixはパブリッククラウドを対象にしたエージェントレスのSaaS型サービスです。クラウド環境の可視化をできるほか、設定がコンプライアンスに沿っているか確認できます。今回はAlert機能をピックアップします。
2020.07.07

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Cloud Optixはパブリッククラウドを対象にしたエージェントレスのSaaS型サービスです。クラウド環境の可視化をできるほか、設定がコンプライアンスに沿っているか確認できます。今回はAlert機能をピックアップします。

クラウド環境の追加

事前準備として、Cloud Optixにクラウド環境を登録します。具体的にはCloud Optixコンソールに表示されるAWS CLIコマンドやTerraformを実行します。Azureの場合はAzure PowerShell。GCPはGoogle Cloud Shellにコマンドをコピーアンドペーストすれば登録できます。

ダッシュボード

環境を追加すると、Alertの情報が以下の4段階のレベルで表示されます。

  • Critical alerts
  • High Alerts
  • Medium Alerts
  • Low Alerts

アラートには4種類あります。クラウド環境を追加した直後にはセキュリティモニタリングに関するアラートが並ぶはずです。

  1. セキュリティモニタリング:クラウド環境のセキュリティチェックの結果
  2. アノニマリー:Cloud OptixのAIモデルで不審なアクティビティを検出
  3. GuardDuty:AWSの脅威検出サービスであるGuardDutyのアラート
  4. IaC:IaCテンプレートに関するセキュリティチェックの結果

セキュリティチェックに使われるポリシーですが、AWSに関するものだけでも16種類利用できます。具体的にはCIS BenchmarkやISO 27001、PCI DSS 3.2などです。

アラートを手動で解決する

Critical alertsを確認します。アラートレベルを選択することでそのレベルの項目だけ確認できます。時刻や環境単位のフィルタリングも可能です。本記事を書くために私物のAWSアカウントを作成したのですが、Critical Alerts「Ensure MFA is enabled for the 'root' account」が作成されました。ルートアカウントにMFAが適用されていない旨の内容です。

項目を選択すると詳細を確認できます。右上のチケットボタンを押すとJIRAチケットやService Nowのチケットを起票できます。課題管理にそれらのサービスを使っている際は使うと良いでしょう。ベルは抑制のボタンです。アラートを無視して良いときはこちらを選択します。スパナはCloud Optixからアラートを修正するボタンです。対応する項目の場合には利用できます。

ルートアカウントのMFAは適用すべきですので、適用しておきました。Remediationに記載のURLを開くと関連するAWSユーザーガイドが表示されます。

アラートをCloud Optixで解決する

テスト用にパブリックなS3バケットを作成したところ、「Ensure S3 buckets do not allow public read/list permission」というアラートが発生しました。スパナマークを選択し、Cloud Optixから修正します。

初回のみRemediate用の設定をする必要があります。YESを選択し進みます。

「Click here」を選択し、Remediate用のIAMロールを作成します。

「Step 2 B」のスクリプトを実行すると、許可するRemediateアクションを選択するよう求められます。S3バケットの問題や、S3暗号化、パスワードポリシーなどの修復ができるようです。"1"を入力し、全てを許可してからyで進みます。

Which remediation action(s) would you like to allow?
Action--> Required Permissions

[ ] 1) All Below
[ ] 2) Remediate Public S3 Bucket issues--> s3:PutBucketAcl,s3:GetBucketAcl,s3:PutBucketPolicy,s3:GetBucketPolicy
[ ] 3) Remediate S3 public bucket encryption issues--> s3:PutEncryptionConfiguration
[ ] 4) Remediate Password policy issues--> iam:GetAccountPasswordPolicy, iam:UpdateAccountPasswordPolicy
[ ] 5) Remediate LogFileValidation for cloudtrail--> cloudtrail:UpdateTrail
[ ] 6) Remediate Unused Security Group--> ec2:DeleteSecurityGroup
[ ] 7) Remediate resources with public IP and Security Group with ingress from any source on any port
--> ec2:DescribeSecurityGroups,ec2:RevokeSecurityGroupIngress

Select the desired actions using their number (again to uncheck, ENTER when done): 1
Which remediation action(s) would you like to allow?
Action--> Required Permissions

[+] 1) All Below
[+] 2) Remediate Public S3 Bucket issues--> s3:PutBucketAcl,s3:GetBucketAcl,s3:PutBucketPolicy,s3:GetBucketPolicy
[+] 3) Remediate S3 public bucket encryption issues--> s3:PutEncryptionConfiguration
[+] 4) Remediate Password policy issues--> iam:GetAccountPasswordPolicy, iam:UpdateAccountPasswordPolicy
[+] 5) Remediate LogFileValidation for cloudtrail--> cloudtrail:UpdateTrail
[+] 6) Remediate Unused Security Group--> ec2:DeleteSecurityGroup
[+] 7) Remediate resources with public IP and Security Group with ingress from any source on any port
--> ec2:DescribeSecurityGroups,ec2:RevokeSecurityGroupIngress

Select the desired actions using their number (again to uncheck, ENTER when done):
Are you sure (y/n)?y

Avid-Remediate-Roleが作成されたので、Avid-Remediate-RoleのArnとExternal-Idを更新するよう求められます。

Creating cross-account role [Avid-Remediate-Role]

Updated account details with Remediation-Role ARN and External-Id.

-------------------------------------------
All steps done! If you are running this script for the first time and see any errors, Please contact technical support at sophos.com/support and click 'Open a Support Case'.
-------------------------------------------

IAMコンソール>IAMロールから、Avid-Remediate-Roleを選択し、Role ARNとRemediate External Idを確認します。

Cloud Optixの画面に入力し、Saveします。

アラート画面に戻り、スパナマークを選択します。修復するS3バケットを選択し、理由を入力した上でRemediateします。

実施してすぐにバケットポリシーが以下のように変更されました。Pricinpalが自分のAWSアカウントIDに書き換えられていました。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicRead",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::MyAWSAccountID:root"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::bucket-name/*"
        }
    ]
}

参考までに変更前は以下のように「 "Principal": "*"」であり、publicなリード権限が設定されていました。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicRead",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::bucket-name/*"
        }
    ]
}

修復した項目はCloud Optixのアラート画面から消えました。

アラートを除外する

ハードウェアMFAが利用されているか確認する「Ensure hardware MFA is enabled for the "root" account」という項目がありますが、私としては私物のAWSアカウントにハードウェアMFAを適用するつもりはありません。ベルのアイコンを選択し、リソースにチェックをしてアラートを除外します。

除外したアラートは一覧から消えますが、「Show Suppressed Alerts」を有効にすることで表示できます。また、Unsuppressで除外を取り消せます。また、Audit logsに除外した記録が残ります。

おわりに

Cloud Optixのアラート機能について、紹介しました。ポリシー通りにクラウド環境が設定されているか自動でチェックします。アラートは手動で対応、Cloud Optixから修正、除外といった対応を行います。Azure、GCP、IaCにも対応していますので、複数環境、複数クライドの設定管理に役立てられます。