跳转到主要内容

Cloud Custodian - Git提交作为逻辑策略变更

项目描述

c7n-policystream: 从Git获取策略变更

% [comment]: # ( !!! 重要 !!! ) % [comment]: # (此文件在文档生成期间已移动。) % [comment]: # (只编辑原文档 ./tools/c7n_policystream/README.md)

按照基础设施即代码的原则使用custodian,我们将策略资产存储在版本控制仓库中。这提供了审计日志并促进了代码审查。然而,此功能主要适用于对变更进行语义解释的人类。

此脚本还提供了git仓库的逻辑保管员策略变更,并允许流式传输这些变更以供机器可读和应用消费。它通常用作CI集成或策略索引的基础。

两个示例用例

  • 仅在拉取请求中的变更策略上执行dryrun
  • 构建策略变更的数据库。

Policystream可以在单个GitHub仓库或组织内一组仓库的GitHub集成上运行。

安装

如果可用的必需预置库(libgit2 > 0.26)可用,则可以通过pypi安装policystream。

pip install c7n-policystream

很快会有Docker镜像,请参阅构建以构建自己的镜像。

构建

或者可以按以下方式构建Docker镜像

# Note must be top level directory of checkout
cd cloud-custodian

docker build -t policystream:latest -f tools/c7n_policystream/Dockerfile .

docker run --mount src="$(pwd)",target=/repos,type=bind policystream:latest

用法

流式传输用例(默认流是到stdout,也支持kinesis、rdbms和sqs)

  $ c7n-policystream stream -r foo
  2018-08-12 12:37:00,567: c7n.policystream:INFO Cloning repository: foo
  <policy-add policy:foi provider:aws resource:ec2 date:2018-08-02T15:13:28-07:00 author:Kapil commit:09cb85>
  <policy-moved policy:foi provider:aws resource:ec2 date:2018-08-02T15:14:24-07:00 author:Kapil commit:76fce7>
  <policy-remove policy:foi provider:aws resource:ec2 date:2018-08-02T15:14:46-07:00 author:Kapil commit:570ca4>
  <policy-add policy:ec2-guard-duty provider:aws resource:ec2 date:2018-08-02T15:14:46-07:00 author:Kapil commit:570ca4>
  <policy-add policy:ec2-run provider:aws resource:ec2 date:2018-08-02T15:16:00-07:00 author:Kapil commit:d3d8d4>
  <policy-remove policy:ec2-run provider:aws resource:ec2 date:2018-08-02T15:18:31-07:00 author:Kapil commit:922c1a>
  <policy-modified policy:ec2-guard-duty provider:aws resource:ec2 date:2018-08-12T09:39:43-04:00 author:Kapil commit:189ea1>
  2018-08-12 12:37:01,275: c7n.policystream:INFO Streamed 7 policy changes

在两个源和目标修订规范之间进行策略差异。如果未指定源和目标,则默认修订选择取决于当前工作树分支。目的是用于两种用例,如果在非master分支上,则显示到master的diff。如果在master上,则显示到master上上一个提交的diff。对于不使用master约定的仓库,请指定显式的源和目标。

  $ c7n-policystream diff -r foo -v

拉取请求使用,输出当前分支和master之间的策略变更。

  $ c7n-policystream diff -r foo
  policies:
  - filters:
    - {type: cross-account}
    name: lambda-access-check
    resource: aws.lambda

选项

$ c7n-policystream --help
Usage: c7n-policystream [OPTIONS] COMMAND [ARGS]...

  Policy changes from git history

Options:
  --help  Show this message and exit.

Commands:
  diff          Policy diff between two arbitrary revisions.
  org-checkout  Checkout repositories from a GitHub organization.
  org-stream    Stream changes for repos in a GitHub organization.
  stream        Stream git history policy changes to destination.

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面