Hyperglance製品のAutomation機能を使ってみた

記事タイトルとURLをコピーする

概要

 当エントリーでは、Hyperglance製品のAutomations機能の初期設定と実行をしてみたので自分へのメモを兼ねて情報として残します。

内容や画面描画については執筆時点のとなり最新のものと異なる可能性がある点ご注意ください。

そもそもの製品自体の導入手順については以下blogエントリーで紹介していますので必要に応じて参照してください。

blog.serverworks.co.jp

当エントリー内で既存扱いするIAMロールもHyperglance製品導入の際に自動作成されたものとなります。

Automation機能とは

 ここでいうAutomation機能がどのようなものかについて、メーカーとしては「ルールと結果のアクションの組み合わせ」であると定めており、特にその処理にて問題が修復された場合はその処理のことを「Remediation」と呼称します。

といっても製品に一度も触れないとイメージが沸きづらいと思われるので補足すると

Hyperglanceには、Advanced Search という管理下にあるクラウドアカウント全てに対して横断的かつ高度に抽出できる機能があります。

当機能を利用し、ルール(指定条件)に基づく抽出処理を実行し、抽出されたリソースに関し管理者へ何らかの形で通知したり、今回紹介するAutomationsの処理を実行して対象リソースに対する処理(API)を実行する事が可能となります。

Hyperglance製品のAutomationの仕組みとしては、AWSを例にすると以下のような処理の流れとなります。

    1. Hyperglanceで事前に作成されたルールまたはカスタムルールがトリガーされる (当エントリーでこれから処理作成していく内容です)
  • 2.Hyperglanceにてルールの結果を S3バケットへ送信する
  • 3.Lambda関数がS3バケットに出力されたルールの結果(対象リソース等)を読み込みAutomationの処理を実行する
  • 4.対象AWSアカウントにて処理(コマンド)が実行され、問題が解決される

実際にどのような処理が出来る(現時点で用意されている)かについては、以下オフィシャル頁に纏まっています。

執筆時点で50以上の処理が用意されています。

support.hyperglance.com

Automationsの初期設定をしてみる

Hyperglance導入初期状態で Automations タブを押下すると以下の様な画面が表示され、Setupを実施するよう要求されます。

Setupの手順については、以下のGitHubのレポジトリにて公開されており、導入する際もこちらのREADMEを参照しながら実施します。

github.com

設定する際に必要な環境として以下内容が指定されているので、もし事前に準備します。

  1. クライアントPCでTerraformを利用出来るようインストール learn.hashicorp.com

  2. クライアントPCでAWS CLIを利用出来るようインストール docs.aws.amazon.com

  3. Hyperglanceサーバー(EC2インスタンス)が実行するIAMロールのポリシーで以下を付与.

"s3:PutObject",
"s3:GetObject",
"s3:ListBucket",

以下オフィシャル手順通りのポリシーでHyperglanceを導入している場合、以下の通り最初からGetObjectと ListBucketは付与されていますのでPubObjectのみを追記するだけで問題ありません。

"s3:PutObject",

support.hyperglance.com

あとはREADMEの指定通り、gitclone -> terraform init -> terraform apply していきます。

ただ、初期の状態で terraform apply をすると以下のように main.tf で ARNを指定する必要がありエラーとなります。

% terraform apply                                                                                                                        (git)-[master]
provider.aws.region
  The region where AWS operations will take place. Examples
  are us-east-1, us-west-2, etc.

  Enter a value: ap-northeast-1

╷
│ Error: Invalid value for variable
│
│   on main.tf line 14, in module "hyperglance_automations":
│   14:   hyperglance_identity_arn = ""
│
│ The arn of the role under which Hyperglance is running must be set.
│
│ This was checked by the validation rule at ../modules/hyperglance-automations/variables.tf:32,5-15.
╵
%

メッセージ通り、terraform apply 実行前に main.tf の変数 hyperglance_identity_arn に 製品インストール時に作成された IAMロールのARNを指定してあげる必要があります。

provider "aws" {
}

# ---------------------------------------------------------------------------------------------------------------------
# DEPLOY HYPERGLANCE AUTOMATION RESOURCES
# ---------------------------------------------------------------------------------------------------------------------


module "hyperglance_automations" {
  source = "../modules/hyperglance-automations"
  generate_permissions_script = "../../metadata/generate_permissions_json.py"
  src_package = "../../../src"
  generate_automations_script = "../../metadata/generate_automations_json.py"
  hyperglance_identity_arn = ""
  
  
}

以下のようにARN (名称はCFnのSlack指定名称により変動)を指定してから実行します。

  hyperglance_identity_arn = "arn:aws:iam::XXXXXXXXXX:role/Hyperglance250-HGRole-XXXXXXXXXXXX"

通常 yes と押下するだけで進み、末尾にbucket_name と lambda_arn といった内容が表示されてインストールは完了します。

bucket_name の内容については後に使うのでコピー等で情報を控えておきます。 (Lambda関数のARNも管理者として把握する程度に情報は控えておくと良いでしょう)

Do you want to perform these actions?
  Terraform will perform the actions described above.
  Only 'yes' will be accepted to approve.

  Enter a value: yes

module.hyperglance_automations.random_pet.hyperglance_automations_name: Creating...

  
### --- snip ---
  

module.hyperglance_automations.aws_s3_bucket_policy.hyperglance_bucket_policy: Creation complete after 0s [id=hyperglance-automations-verified-XXXXXXX]

Apply complete! Resources: 11 added, 0 changed, 0 destroyed.

Outputs:

bucket_name = "hyperglance-automations-verified-XXXXXXX"
lambda_arn = "arn:aws:lambda:ap-northeast-1:XXXXXXXXXXX:function:hyperglance-automations-verified-XXXXXXX"

%

Hyperglance画面にて Automationsの設定

 あとは Hyperglanceの管理画面 -> Setting -> Automations 画面にて S3 Bucket Name の箇所に先程作成されたものを指定し、Submitするだけで設定は完了します。

実際にAutomations処理を仕掛けてみる

 Automationsの機能は、Advanced Search 画面の左画面にボタンが用意されており、指定した検索条件でHITしたリソースに対していつ何を実行するのか?を指定する形で設定します。

実行するアクション(Automation処理)を指定すると、以下画面のように処理に名前を付けたり、一定時間周期で実行したり、指定曜日のXX時に実行のような形でスケジューリング指定が可能です。

Automationタブの画面では、処理の実行状況(主な用途だと履歴) を日付単位で確認する事ができます。

上のサンプル通り 指定AWSアカウント内のS3バケットに対しBlock S3 Public Access 処理を実行したところ、Successful として対象となった S3バケットの一覧が表示されました。

そしてAWSマネジメントコンソールでも対象リソースを確認したところ、Block Public Access を無効化 (手動でチェックを外した状態)していたS3バケットが当該処理タイミング後に、有効化されている事が確認できました。

まとめ

 Hyperglance製品のAutomation機能について実際に設定してみました。

設定自体は簡単ですぐに扱えるものとして様々な処理が用意されている事がイメージ頂けたと思います。

ただ、実際に複数のクラウド環境で実施すべき処理やら抽出条件、その際に対象リソースへ付与されていなければならないタグだとかを考慮しつつ、組織にとって必要な処理を"継続的"に考えていく事が当機能を使いこなす上で「肝」といえますので管理者として運用する際は意識したいところです。

関連エントリー

blog.serverworks.co.jp

blog.serverworks.co.jp

blog.serverworks.co.jp