معرفی شرکت ها


c7n-left-0.1.7


Card image cap
تبلیغات ما

مشتریان به طور فزاینده ای آنلاین هستند. تبلیغات می تواند به آنها کمک کند تا کسب و کار شما را پیدا کنند.

مشاهده بیشتر
Card image cap
تبلیغات ما

مشتریان به طور فزاینده ای آنلاین هستند. تبلیغات می تواند به آنها کمک کند تا کسب و کار شما را پیدا کنند.

مشاهده بیشتر
Card image cap
تبلیغات ما

مشتریان به طور فزاینده ای آنلاین هستند. تبلیغات می تواند به آنها کمک کند تا کسب و کار شما را پیدا کنند.

مشاهده بیشتر
Card image cap
تبلیغات ما

مشتریان به طور فزاینده ای آنلاین هستند. تبلیغات می تواند به آنها کمک کند تا کسب و کار شما را پیدا کنند.

مشاهده بیشتر
Card image cap
تبلیغات ما

مشتریان به طور فزاینده ای آنلاین هستند. تبلیغات می تواند به آنها کمک کند تا کسب و کار شما را پیدا کنند.

مشاهده بیشتر

توضیحات

Custodian policies for IAAC definitions
ویژگی مقدار
سیستم عامل -
نام فایل c7n-left-0.1.7
نام c7n-left
نسخه کتابخانه 0.1.7
نگهدارنده []
ایمیل نگهدارنده []
نویسنده Cloud Custodian Project
ایمیل نویسنده -
آدرس صفحه اصلی https://cloudcustodian.io
آدرس اینترنتی https://pypi.org/project/c7n-left/
مجوز Apache-2
# Custodian policies for Infrastructure Code This package allows cloud custodian to evaluate policies directly against infrastructure as code source assets. It also provides a separate cli for better command line ux for source asset evaluation. ## Install We currently only support python > 3.10 on mac and linux, to run on windows we recommend using our docker images. ```shell pip install c7n_left ``` We also provide signed docker images. These images are built on top of chainguard's [wolfi linux distribution](https://www.chainguard.dev/unchained/introducing-wolfi-the-first-linux-un-distro) which is designed to be minimal, auditable, and secure. ```shell docker pull cloudcustodian/c7n_left:dev ``` Images signatures can be verified using [cosign](https://github.com/sigstore/cosign) ``` export IMAGE=$(docker image inspect cloudcustodian/c7n-left:dev -f '{{index .RepoDigests 0}}') cosign verify $IMAGE \ --certificate-identity 'https://github.com/cloud-custodian/cloud-custodian/.github/workflows/docker.yml@refs/heads/main' \ --certificate-oidc-issuer 'https://token.actions.githubusercontent.com' ``` ## Usage ```shell ❯ c7n-left run --help Usage: c7n-left run [OPTIONS] evaluate policies against IaC sources. c7n-left -p policy_dir -d terraform_root --filters "severity=HIGH" WARNING - CLI interface subject to change. Options: --format TEXT --filters TEXT filter policies or resources as k=v pairs with globbing -p, --policy-dir PATH -d, --directory PATH -o, --output [cli|github|json] --output-file FILENAME --output-query TEXT --summary [policy|resource] --help Show this message and exit. ``` We'll create an empty directory with a policy in it ```yaml policies: - name: test resource: terraform.aws_s3_bucket metadata: severity: medium filters: - server_side_encryption_configuration: absent ``` And now we can use it to evaluate a terraform root module ```shell ❯ c7n-left run -p policies -d module Running 1 policies on 1 resources test - terraform.aws_s3_bucket Failed File: s3.tf:1-8 1 resource "aws_s3_bucket" "example" { 2 bucket = "my-custodian-test-bucket" 3 acl = "private" 4 5 tags = { 6 original-tag = "original-value" 7 } 8 } Evaluation complete 0.00 seconds -> 1 Failures Summary - By Policy ┏━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┓ ┃ Severity ┃ Policy ┃ Result ┃ ┡━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━━━━━━┩ │ medium │ test │ 1 failed 0 passed │ └──────────┴────────┴───────────────────┘ 0 compliant of 1 total, 1 resource has 1 policy violation ``` For running in docker, you'll need to use volume mounts to provide access to the policy directory and terraform root module. ```shell docker run -ti --rm -v $(pwd)/policies:/policies -v $(pwd)/root-module:/module \ cloudcustodian/c7n-left:dev run -p /policies -d /module ``` If the terraform root module has other remote module dependencies, you'll need to fetch those first using terraform before running c7n-left. ```shell terraform get -update ``` ## CLI Filters Which policies and which resources are evaluated can be controlled via command line via `--filters` option. Available filters - `name` - policy name - `category` - policy category - `severity` - minimum policy severity (unknown, low, medium, high, critical) - `type` - resource type, ie. aws_security_group - `id` - resource id ie. aws_vpc.example Multiple values for a given filter can be specified as comma separate values, and all filters except severity support globbing. Examples ``` # run all encryption policies on ebs volumes and sqs queues c7n-left run -p policy_dir -d terraform --filters="category=encryption type=aws_ebs_volume,aws_sqs_queue" # run all medium and higher level policies cost policies c7n-left run -p policy_dir -d terraform --filters="severity=medium category=cost" ``` policy values for severity and category are specified in its metadata section. ie ```yaml policies: - name: check-encryption resource: [aws_ebs_volume, aws_sqs_queue] metadata: category: [encryption, security] severity: high filters: - kms_master_key_id: absent ``` ## Outputs if your using this in github actions, we have special output mode for reporting annotations directly into pull requests with `--output github` We also display a summary output after displaying resource matches, there are two summary displays available, the default policy summary, and a resource summary which can be enabled via `--summary resource`. ## Policy Language Policies for c7n-left support a few additional capabilities beyond what's common for custodian policies. Policies can be specified against multiple resource types either as an array or glob. ```yaml policies: - name: check-encryption resource: [aws_ebs_volume, aws_sqs_queue] ``` A `traverse` filter is available that allows for multi-hop graph traversal from a resource to any related resource. ie, here's a policy against an aws ec2 instance, that checks if any of the security groups attached to the instance, have a permission defined that allows access from 0.0.0.0/0 ```yaml policies: - name: check-security-group-open-cidr resource: terraform.aws_instance description: "EC2 should not be open to world on ssh" filters: - type: traverse resources: - aws_security_group - aws_security_ingress_permission attrs: - Ipv4: 0.0.0.0/0 ``` ## Policy Testing c7n-left supports writing and running tests for policies. To create a test for a policy, create a tests directory next to your policy files. Within that tests directory, create a sub directory with the policy name. Next add terraform files to this sub directory. Typically you would add both terraform files that would match the policy and those that should not. Finally you add assertions in a `left.plan[.yaml|.json]` file. The format of the file is an array of dictionaries. The dictionaries are used to match against the policy findings. The data its matching against is what is found by using `c7n-left run --output json`. Each key/value pair in the dictionary is matched against the finding. So putting it all together, we've setup our tests as follows ```shell ❯ tree policy-dir-a/ policy-dir-a/ ├── alb.yaml └── tests └── alb-deletion-protection-disabled ├── left.plan.yaml ├── negative1.tf └── positive1.tf 3 directories, 4 files ❯ cat policy-dir-a/alb.yaml policies: - name: alb-deletion-protection-disabled resource: [terraform.aws_lb, terraform.aws_alb] description: | Application Load Balancer should have deletion protection enabled metadata: severity: low category: "Insecure Configurations" filters: - enable_deletion_protection: empty ❯ cat policy-dir-a/tests/alb-deletion-protection-disabled/left.plan.yaml - "resource.__tfmeta.filename": "positive1.tf" ``` and now we can run a test ```shell ❯ c7n-left test -p policy-dir-a/ Discovered 1 Tests Failure alb-deletion-protection-disabled [{'resource.__tfmeta.filename': 'positive1.tf'}] checks not used 1 Test Complete (0.05s) 1 Failure ``` A test fails if either an assertion in the plan file does not match one policy finding, or if a policy finding is not matched by an assertion.


نیازمندی

مقدار نام
==0.9.26 c7n
==1.26.109 boto3
==4.17.3 jsonschema
==3.0.5 argcomplete
==2.8.2 python-dateutil
==6.0 pyyaml
==0.9.0 tabulate
==5.2.0 importlib-metadata
==0.18.1 docutils
==1.29.109 botocore
==1.0.1 jmespath
==0.6.0 s3transfer
==22.2.0 attrs
==5.12.0 importlib-resources
==1.3.10 pkgutil-resolve-name
==0.19.3 pyrsistent
==4.5.0 typing-extensions
==1.16.0 six
==3.15.0 zipp
==1.26.15 urllib3
==8.1.3 click
==13.3.3 rich
==0.5.0 tfparse
==0.4.6 colorama
==2.2.0 markdown-it-py
==2.14.0 pygments
==1.15.1 cffi
==0.1.2 mdurl
==2.21 pycparser


زبان مورد نیاز

مقدار نام
>=3.7,<4.0 Python


نحوه نصب


نصب پکیج whl c7n-left-0.1.7:

    pip install c7n-left-0.1.7.whl


نصب پکیج tar.gz c7n-left-0.1.7:

    pip install c7n-left-0.1.7.tar.gz