Hayat
Google Cloud Platform の監査&強化スクリプト ~
「Hayat」とはどういう意味ですか?
正直なところ、ユニークな名前を見つけるのに苦労しました。「Hayat」はトルコ語で英語の「Life」を意味し、また私の姪の名前でもあります。彼女に会う準備はできていますか?
😍 😍 😍
Hayat は、Google Cloud Platform サービスの監査&強化スクリプトです。対象サービス:
- アイデンティティとアクセス管理 (IAM)
- ロギングとモニタリング
- ネットワーキング
- 仮想マシン
- ストレージ
- Cloud SQL インスタンス
- Kubernetes クラスター
(現時点では)
アイデンティティとアクセス管理 (IAM)
- Gmail アカウントではなく、企業のログイン認証情報が使用されていることを確認します。
- 各サービスアカウントに GCP 管理のサービスアカウントキーのみが存在することを確認します。
- サービスアカウントに管理者権限がないことを確認します。
- IAM ユーザーにプロジェクトレベルでサービスアカウントユーザーのロールが割り当てられていないことを確認します。
- サービスアカウントのユーザー管理/外部キーが 90 日以内にローテーションされていることを確認します。
- ユーザーにサービスアカウント関連のロールを割り当てる際に、職務分離が実施されていることを確認します。
ロギングとモニタリング
- すべてのログエントリに対してシンクが設定されていることを確認します。
- ログバケットでオブジェクトのバージョニングが有効になっていることを確認します。
ネットワーキング
- プロジェクト内にデフォルトネットワークが存在しないことを確認します。
- プロジェクトにレガシーネットワークが存在しないことを確認します。
- Cloud DNS で DNSSEC が有効になっていることを確認します。
- Cloud DNS DNSSEC の鍵署名鍵 (KSK) に RSASHA1 が使用されていないことを確認します。
- Cloud DNS DNSSEC のゾーン署名鍵 (ZSK) に RSASHA1 が使用されていないことを確認します。
- インターネットからの RDP アクセスが制限されていることを確認します。
- インターネットからの SSH アクセスが制限されていることを確認します。
- VPC ネットワークのすべてのサブネットワークで Private Google Access が有効になっていることを確認します。
- VPC ネットワークのすべてのサブネットで VPC フローログが有効になっていることを確認します。
仮想マシン
- インスタンスがすべての Cloud API へのフルアクセスを持つデフォルトのサービスアカウントを使用するように構成されていないことを確認します。
- VM インスタンスで「プロジェクト全体の SSH キーをブロック」が有効になっていることを確認します。
- プロジェクトで OS Login が有効になっていることを確認します。
- VM インスタンスで「シリアルポートへの接続を許可」が有効になっていないことを確認します。
- インスタンスで IP 転送が有効になっていないことを確認します。
- 重要な VM の VM ディスクが顧客指定の暗号鍵 (CSEK) で暗号化されていることを確認します。
ストレージ
- Cloud Storage バケットが匿名または一般公開されてアクセス可能でないことを確認します。
- Cloud Storage バケットでロギングが有効になっていることを確認します。
Cloud SQL データベースサービス
- Cloud SQL データベースインスタンスがすべての受信接続に SSL を要求することを確認します。
- Cloud SQL データベースインスタンスが全世界に公開されていないことを確認します。
- MySQL データベースインスタンスが誰でも管理者権限で接続できるようになっていないことを確認します。
- MySQL データベースインスタンスが任意のホストからの root ログインを許可していないことを確認します。
Kubernetes Engine
- Kubernetes Engine クラスターで Stackdriver Logging が有効に設定されていることを確認します。
- Kubernetes Engine クラスターで Stackdriver Monitoring が有効に設定されていることを確認します。
- Kubernetes Engine クラスターでレガシー認可が無効に設定されていることを確認します。
- Kubernetes Engine クラスターでマスター許可ネットワークが有効に設定されていることを確認します。
- Kubernetes クラスターにラベルが設定されていることを確認します。
- Kubernetes Web UI / ダッシュボードが無効になっていることを確認します。
- Kubernetes クラスターで
Automatic node repair が有効になっていることを確認します。
- Kubernetes Engine クラスターのノードで自動ノードアップグレードが有効になっていることを確認します。
- Kubernetes Engine クラスターのノードイメージに Container-Optimized OS (cos) が使用されていることを確認します。
- Kubernetes Engine クラスターで Basic 認証が無効になっていることを確認します。
- Kubernetes Engine クラスターでネットワークポリシーが有効になっていることを確認します。
- Kubernetes クラスターがクライアント証明書を有効にして作成されていることを確認します。
- Kubernetes クラスターがエイリアス IP 範囲を有効にして作成されていることを確認します。
- Kubernetes Engine クラスターで PodSecurityPolicy コントローラーが有効になっていることを確認します。
- Kubernetes クラスターがプライベートクラスターを有効にして作成されていることを確認します。
- Kubernetes Engine クラスターのサブネットで Private Google Access が設定されていることを確認します。
- Kubernetes クラスターでプロジェクトアクセスにデフォルトのサービスアカウントが使用されていないことを確認します。
- Kubernetes クラスターがプロジェクトアクセス用に制限されたサービスアカウントアクセススコープで作成されていることを確認します。
必要条件
Hayat は gcloud を使用した bash スクリプトで書かれており、Linux および OSX と互換性があります。
使用方法
git clone https://github.com/DenizParlak/Hayat.git && cd Hayat && chmod +x hayat.sh && ./hayat.sh
特定の機能を使用することもできます。例:Kubernetes クラスターのみをスキャンする場合:
./hayat.sh --only-k8s
スクリーンショット

