cloud-custodian - Cloud Custodian は、パブリック クラウドのアカウントとリソースを管理するためのルール エンジンです。これにより、ユーザーはポリシーを定義して、安全でコストが最適化された、適切に管理されたクラウド インフラストラクチャを実現できます。

(Rules engine for cloud security, cost optimization, and governance, DSL in yaml for policies to query, filter, and take actions on resources)

Created at: 2016-03-01 09:11:20
Language: Python
License: Apache-2.0

クラウド管理人

クラウド管理者のロゴ


CI CII のベスト プラクティス

Cloud Custodian は、パブリック クラウドのアカウントとリソースを管理するためのルール エンジンです。これにより、ユーザーはポリシーを定義して、安全でコストが最適化された、適切に管理されたクラウド インフラストラクチャを実現できます。組織が持っているアドホック スクリプトの多くを軽量で柔軟なツールに統合し、統合されたメトリックとレポートを作成します。

Custodian を使用して、セキュリティ ポリシー (暗号化やアクセス要件など)、タグ ポリシー、および未使用リソースのガベージ コレクションと時間外リソース管理によるコスト管理へのリアルタイムのコンプライアンスを確保することにより、AWS、Azure、および GCP 環境を管理できます。

カストディアン ポリシーは、ユーザーがリソース タイプ (EC2、ASG、Redshift、CosmosDB、PubSub トピック) でポリシーを指定できるようにする単純な YAML 構成ファイルで記述され、フィルターとアクションの語彙から構築されます。

各プロバイダーのクラウド ネイティブ サーバーレス機能と統合して、組み込みのプロビジョニングを使用してポリシーをリアルタイムで適用します。または、サーバー上で単純な cron ジョブとして実行して、既存の大規模なフリートに対して実行することもできます。

Cloud Custodian は CNCF サンドボックス プロジェクトであり、何百人もの貢献者のコミュニティによって主導されています。

特徴

  • ポリシーを構築するためのアクションとフィルタの豊富なライブラリを使用して、パブリック クラウド サービスとリソースを包括的にサポートします。
  • ネストされたブール条件を持つリソースに対する任意のフィルタリングをサポートします。
  • ポリシーの予行演習を行い、それが何をするかを確認します。
  • サーバーレス機能とイベント ソースを自動的にプロビジョニングします (AWS CloudWatchEvents、AWS Config Rules、Azure EventGrid、GCP AuditLog & Pub/Sub など)。
  • ポリシーに一致したリソースに関するクラウド プロバイダーのネイティブ メトリック出力
  • ポリシーに一致するリソースのクラウド ネイティブ オブジェクト ストレージへの構造化された出力。
  • API 呼び出しを最小限に抑えるためのインテリジェントなキャッシュの使用。
  • マルチアカウント/サブスクリプション/プロジェクトの使用をサポートします。
  • 実戦テスト済み - 一部の非常に大規模なクラウド環境で運用中。

リンク

クイックインストール

$ python3 -m venv custodian
$ source custodian/bin/activate
(custodian) $ pip install c7n

使用法

Cloud Custodian を使用するための最初のステップは、実行するポリシーを含む YAML ファイルを作成することです。各ポリシーは、ポリシーが実行されるリソースの種類、このポリシーの影響を受けるリソースを制御する一連のフィルター、一致したリソースに対してポリシーが実行するアクション、およびポリシーの実行方法を制御するモードを指定します。

最適な入門ガイドは、クラウド プロバイダー固有のチュートリアルです。

簡単に説明すると、以下は AWS リソースのサンプル ポリシーです。

  1. S3 バケットでクロスアカウント アクセスが有効にならないようにします。
  2. 暗号化された EBS ボリュームを持たない、新しく起動された EC2 インスタンスを終了します。
  3. 「Environment」、「AppId」、および「OwnerContact」または「DeptID」のいずれかのタグを持たない EC2 インスタンスにタグを付け、4 日後に停止します。
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 の具体的な手順については、関連する開始ページにアクセスしてください。

参加する

  • GitHub - (このページ)
  • Slack - ヘルプが必要な場合や、カストディアンへの貢献に興味がある場合は、リアルタイム チャットを利用できます。
    • Gitter - (古いリアルタイム チャット、今後移行する可能性があります)
  • メーリング リスト- 私たちのプロジェクトのメーリング リストです。重要なプロジェクトの発表については、ここで購読してください。お気軽に質問してください。
  • Reddit - サブレディット
  • StackOverflow - 開発者向け Q&A サイト、
    cloudcustodian
    タグに注目
  • YouTube チャンネル- チュートリアルやその他の役立つ情報、ミーティング ビデオの追加に取り組んでいます。

コミュニティ リソース

あらゆるスキル レベルのすべてのユーザーと開発者が参加できる定期的なコミュニティ ミーティングがあります。メーリング リストに参加すると、会議の招待状が自動的に送信されます。ミーティングへの参加に関する技術的な情報については、以下のメモを参照してください。

追加ツール

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の行動規範に準拠しています

参加することで、この規範を尊重することが期待されます。