Cloud Custodian は、パブリック クラウドのアカウントとリソースを管理するためのルール エンジンです。これにより、ユーザーはポリシーを定義して、安全でコストが最適化された、適切に管理されたクラウド インフラストラクチャを実現できます。組織が持っているアドホック スクリプトの多くを軽量で柔軟なツールに統合し、統合されたメトリックとレポートを作成します。
Custodian を使用して、セキュリティ ポリシー (暗号化やアクセス要件など)、タグ ポリシー、および未使用リソースのガベージ コレクションと時間外リソース管理によるコスト管理へのリアルタイムのコンプライアンスを確保することにより、AWS、Azure、および GCP 環境を管理できます。
カストディアン ポリシーは、ユーザーがリソース タイプ (EC2、ASG、Redshift、CosmosDB、PubSub トピック) でポリシーを指定できるようにする単純な YAML 構成ファイルで記述され、フィルターとアクションの語彙から構築されます。
各プロバイダーのクラウド ネイティブ サーバーレス機能と統合して、組み込みのプロビジョニングを使用してポリシーをリアルタイムで適用します。または、サーバー上で単純な cron ジョブとして実行して、既存の大規模なフリートに対して実行することもできます。
Cloud Custodian は CNCF サンドボックス プロジェクトであり、何百人もの貢献者のコミュニティによって主導されています。
$ python3 -m venv custodian
$ source custodian/bin/activate
(custodian) $ pip install c7n
Cloud Custodian を使用するための最初のステップは、実行するポリシーを含む YAML ファイルを作成することです。各ポリシーは、ポリシーが実行されるリソースの種類、このポリシーの影響を受けるリソースを制御する一連のフィルター、一致したリソースに対してポリシーが実行するアクション、およびポリシーの実行方法を制御するモードを指定します。
最適な入門ガイドは、クラウド プロバイダー固有のチュートリアルです。
簡単に説明すると、以下は AWS リソースのサンプル ポリシーです。
policies:
- name: s3-cross-account
description: |
Checks S3 for buckets with cross-account access and
removes the cross-account access.
resource: aws.s3
region: us-east-1
filters:
- type: cross-account
actions:
- type: remove-statements
statement_ids: matched
- name: ec2-require-non-public-and-encrypted-volumes
resource: aws.ec2
description: |
Provision a lambda and cloud watch event target
that looks at all new instances and terminates those with
unencrypted volumes.
mode:
type: cloudtrail
role: CloudCustodian-QuickStart
events:
- RunInstances
filters:
- type: ebs
key: Encrypted
value: false
actions:
- terminate
- name: tag-compliance
resource: aws.ec2
description: |
Schedule a resource that does not meet tag compliance policies to be stopped in four days. Note a separate policy using the`marked-for-op` filter is required to actually stop the instances after four days.
filters:
- State.Name: running
- "tag:Environment": absent
- "tag:AppId": absent
- or:
- "tag:OwnerContact": absent
- "tag:DeptID": absent
actions:
- type: mark-for-op
op: stop
days: 4
次のコマンドを使用して、サンプル ポリシーで Cloud Custodian を検証、テスト、実行できます。
# Validate the configuration (note this happens by default on run)
$ custodian validate policy.yml
# Dryrun on the policies (no actions executed) to see what resources
# match each policy.
$ custodian run --dryrun -s out policy.yml
# Run the policy
$ custodian run -s out policy.yml
Docker 経由でも Cloud Custodian を実行できます。
# Download the image
$ docker pull cloudcustodian/c7n
$ mkdir output
# Run the policy
#
# This will run the policy using only the environment variables for authentication
$ docker run -it \
-v $(pwd)/output:/home/custodian/output \
-v $(pwd)/policy.yml:/home/custodian/policy.yml \
--env-file <(env | grep "^AWS\|^AZURE\|^GOOGLE") \
cloudcustodian/c7n run -v -s /home/custodian/output /home/custodian/policy.yml
# Run the policy (using AWS's generated credentials from STS)
#
# NOTE: We mount the ``.aws/credentials`` and ``.aws/config`` directories to
# the docker container to support authentication to AWS using the same credentials
# credentials that are available to the local user if authenticating with STS.
$ docker run -it \
-v $(pwd)/output:/home/custodian/output \
-v $(pwd)/policy.yml:/home/custodian/policy.yml \
-v $(cd ~ && pwd)/.aws/credentials:/home/custodian/.aws/credentials \
-v $(cd ~ && pwd)/.aws/config:/home/custodian/.aws/config \
--env-file <(env | grep "^AWS") \
cloudcustodian/c7n run -v -s /home/custodian/output /home/custodian/policy.yml
custodian cask ツールは、通常のcustodian cli をミラーリングする透過的なフロント エンドを docker に提供する go バイナリですが、ボリュームのマウントを自動的に処理します。
追加情報についてはドキュメントを参照するか、gitter で連絡してください。
AWS、Azure、および GCP の具体的な手順については、関連する開始ページにアクセスしてください。
cloudcustodianタグに注目
あらゆるスキル レベルのすべてのユーザーと開発者が参加できる定期的なコミュニティ ミーティングがあります。メーリング リストに参加すると、会議の招待状が自動的に送信されます。ミーティングへの参加に関する技術的な情報については、以下のメモを参照してください。
Custodian プロジェクトは、 https : //github.com/cloud-custodian/cloud-custodian/tree/master/toolsで追加ツールのスイートも開発および維持してい ます。
Org :マルチアカウント ポリシーの実行。
PolicyStream :論理的なポリシー変更のストリームとしての Git 履歴。
Salactus : s3 スキャンをスケールアウトします。
Mailer :ユーザーにメッセージを送信して通知するリファレンス実装。
Trail Creator : CloudTrail からのリソース作成者の遡及的タグ付け
TrailDB :ダッシュボード用の Cloudtrail インデックス作成と時系列生成。
LogExporter : s3 にエクスポートするクラウド ウォッチ ログ
Cask : docker 経由の簡単な custodian exec
Guardian :自動化されたマルチアカウント Guard Duty 設定
オムニ SSM : EC2 Systems Manager の自動化
Mugc : AWS 環境にデプロイされた Cloud Custodian Lambda ポリシーをクリーンアップするために使用されるユーティリティ。
https://cloudcustodian.io/docs/contribute.htmlを参照してください
Cloud Custodian でセキュリティ関連の問題、脆弱性、または潜在的な脆弱性を発見した場合は、Cloud Custodian Security Teamに脆弱性の詳細をお知らせください。報告を承認するために確認メールを送信し、問題が肯定的または否定的に特定された場合は、追加の電子メールを送信します。
このプロジェクトはCNCFの行動規範に準拠しています
参加することで、この規範を尊重することが期待されます。