iam-policy-validator 1.0.2__tar.gz → 1.0.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of iam-policy-validator might be problematic. Click here for more details.
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/.github/workflows/ci.yml +20 -51
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/.github/workflows/release.yml +58 -8
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/PKG-INFO +1 -1
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/__version__.py +1 -1
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/pyproject.toml +1 -1
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/uv.lock +1 -1
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/.github/dependabot.yml +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/.gitignore +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/.python-version +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/CONTRIBUTING.md +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/DOCS.md +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/LICENSE +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/Makefile +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/README.md +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/action.yaml +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/docs/README.md +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/docs/development/PUBLISHING.md +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/README.md +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/access-analyzer/example1.json +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/access-analyzer/example2.json +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/configs/action-condition-enforcement-advanced.yaml +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/configs/config-privilege-escalation.yaml +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/configs/custom-business-rules.yaml +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/configs/custom-wildcard-config.yaml +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/configs/none_of_example.yaml +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/configs/unified-condition-enforcement.yaml +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/custom_checks/README.md +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/custom_checks/advanced_multi_condition_validator.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/custom_checks/cross_account_external_id_check.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/custom_checks/domain_restriction_check.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/custom_checks/encryption_required_check.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/custom_checks/mfa_required_check.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/custom_checks/region_restriction_check.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/custom_checks/tag_enforcement_check.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/custom_checks/time_based_access_check.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/github-actions/README.md +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/github-actions/access-analyzer-only.yaml +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/github-actions/action-examples.md +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/github-actions/basic-validation.yaml +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/github-actions/custom-policy-checks.yml +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/github-actions/multi-region-validation.yaml +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/github-actions/resource-policy-validation.yaml +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/github-actions/sequential-validation.yaml +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/github-actions/two-step-validation.yaml +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/policies/test-cases/README-privilege-escalation.md +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/policies/test-cases/api_gateway_management.json +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/policies/test-cases/athena_query_access.json +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/policies/test-cases/backup_vault_access.json +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/policies/test-cases/cloudformation_deployer.json +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/policies/test-cases/cloudwatch_monitoring.json +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/policies/test-cases/cognito_user_pool.json +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/policies/test-cases/dynamodb_table_access.json +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/policies/test-cases/ecs_task_execution.json +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/policies/test-cases/eventbridge_rules.json +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/policies/test-cases/glue_etl_jobs.json +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/policies/test-cases/insecure_policy.json +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/policies/test-cases/invalid_policy.json +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/policies/test-cases/kms_encryption_keys.json +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/policies/test-cases/lambda_developer.json +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/policies/test-cases/maximum_size_policy.json +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/policies/test-cases/policy_missing_required_tags.json +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/policies/test-cases/policy_tag_enforcement_example.json +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/policies/test-cases/policy_with_wildcard_resources.json +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/policies/test-cases/privilege_escalation_scattered.json +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/policies/test-cases/rds_database_admin.json +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/policies/test-cases/sample_policy.json +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/policies/test-cases/secrets_manager_access.json +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/policies/test-cases/sns_sqs_messaging.json +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/policies/test-cases/step_functions_workflow.json +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/policies/test-cases/test_none_of_valid.json +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/policies/test-cases/test_none_of_violations.json +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/policies/test-cases/wildcard_examples.json +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam-validator.yaml +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/__init__.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/__main__.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/checks/__init__.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/checks/action_condition_enforcement.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/checks/action_validation.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/checks/condition_key_validation.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/checks/policy_size.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/checks/resource_validation.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/checks/security_best_practices.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/checks/sid_uniqueness.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/commands/__init__.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/commands/analyze.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/commands/base.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/commands/post_to_pr.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/commands/validate.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/core/__init__.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/core/access_analyzer.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/core/access_analyzer_report.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/core/aws_fetcher.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/core/aws_global_conditions.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/core/check_registry.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/core/cli.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/core/config_loader.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/core/formatters/__init__.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/core/formatters/base.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/core/formatters/console.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/core/formatters/csv.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/core/formatters/html.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/core/formatters/json.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/core/formatters/markdown.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/core/formatters/sarif.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/core/models.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/core/policy_checks.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/core/policy_loader.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/core/pr_commenter.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/core/report.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/integrations/__init__.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/integrations/github_integration.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/integrations/ms_teams.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/tests/README.md +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/tests/__init__.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/tests/test_action_condition_enforcement.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/tests/test_action_validation_check.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/tests/test_aws_fetcher_wildcards.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/tests/test_aws_global_conditions.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/tests/test_check_registry.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/tests/test_comment_truncation.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/tests/test_condition_key_validation_check.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/tests/test_config_loader.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/tests/test_custom_policy_checks.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/tests/test_models.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/tests/test_multipart_comments.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/tests/test_policy_loader.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/tests/test_policy_size_check.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/tests/test_resource_validation_check.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/tests/test_security_best_practices.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/tests/test_sid_uniqueness_check.py +0 -0
- {iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/tests/test_wildcard_allowlist.py +0 -0
|
@@ -13,17 +13,17 @@ jobs:
|
|
|
13
13
|
runs-on: ubuntu-latest
|
|
14
14
|
steps:
|
|
15
15
|
- name: Checkout code
|
|
16
|
-
uses: actions/checkout@v5
|
|
16
|
+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
|
|
17
17
|
|
|
18
18
|
- name: Set up Python
|
|
19
|
-
uses: actions/setup-python@v6
|
|
19
|
+
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6
|
|
20
20
|
with:
|
|
21
21
|
python-version: "3.12"
|
|
22
22
|
|
|
23
23
|
- name: Install uv
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
uses: astral-sh/setup-uv@5dbc9fba7434435c4cd0268139340fa3696d98f3 # v7
|
|
25
|
+
with:
|
|
26
|
+
enable-cache: true
|
|
27
27
|
|
|
28
28
|
- name: Install dependencies
|
|
29
29
|
run: uv sync --all-extras
|
|
@@ -34,30 +34,6 @@ jobs:
|
|
|
34
34
|
- name: Run Ruff formatter check
|
|
35
35
|
run: uv run ruff format --check .
|
|
36
36
|
|
|
37
|
-
# Temporarily disabled - will re-enable when type annotations are complete
|
|
38
|
-
# type-check:
|
|
39
|
-
# name: Type Check with mypy
|
|
40
|
-
# runs-on: ubuntu-latest
|
|
41
|
-
# steps:
|
|
42
|
-
# - name: Checkout code
|
|
43
|
-
# uses: actions/checkout@v5
|
|
44
|
-
|
|
45
|
-
# - name: Set up Python
|
|
46
|
-
# uses: actions/setup-python@v6
|
|
47
|
-
# with:
|
|
48
|
-
# python-version: "3.12"
|
|
49
|
-
|
|
50
|
-
# - name: Install uv
|
|
51
|
-
# run: |
|
|
52
|
-
# curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
53
|
-
# echo "$HOME/.local/bin" >> $GITHUB_PATH
|
|
54
|
-
|
|
55
|
-
# - name: Install dependencies
|
|
56
|
-
# run: uv sync --all-extras
|
|
57
|
-
|
|
58
|
-
# - name: Run mypy
|
|
59
|
-
# run: uv run mypy iam_validator/
|
|
60
|
-
|
|
61
37
|
test:
|
|
62
38
|
name: Test (Python ${{ matrix.python-version }})
|
|
63
39
|
runs-on: ubuntu-latest
|
|
@@ -67,17 +43,17 @@ jobs:
|
|
|
67
43
|
python-version: ["3.10", "3.11", "3.12", "3.13"]
|
|
68
44
|
steps:
|
|
69
45
|
- name: Checkout code
|
|
70
|
-
uses: actions/checkout@v5
|
|
46
|
+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
|
|
71
47
|
|
|
72
48
|
- name: Set up Python ${{ matrix.python-version }}
|
|
73
|
-
uses: actions/setup-python@v6
|
|
49
|
+
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6
|
|
74
50
|
with:
|
|
75
51
|
python-version: ${{ matrix.python-version }}
|
|
76
52
|
|
|
77
53
|
- name: Install uv
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
54
|
+
uses: astral-sh/setup-uv@5dbc9fba7434435c4cd0268139340fa3696d98f3 # v7
|
|
55
|
+
with:
|
|
56
|
+
enable-cache: true
|
|
81
57
|
|
|
82
58
|
- name: Install dependencies
|
|
83
59
|
run: uv sync --all-extras
|
|
@@ -91,17 +67,17 @@ jobs:
|
|
|
91
67
|
needs: [lint, test]
|
|
92
68
|
steps:
|
|
93
69
|
- name: Checkout code
|
|
94
|
-
uses: actions/checkout@v5
|
|
70
|
+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
|
|
95
71
|
|
|
96
72
|
- name: Set up Python
|
|
97
|
-
uses: actions/setup-python@v6
|
|
73
|
+
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6
|
|
98
74
|
with:
|
|
99
75
|
python-version: "3.12"
|
|
100
76
|
|
|
101
77
|
- name: Install uv
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
78
|
+
uses: astral-sh/setup-uv@5dbc9fba7434435c4cd0268139340fa3696d98f3 # v7
|
|
79
|
+
with:
|
|
80
|
+
enable-cache: true
|
|
105
81
|
|
|
106
82
|
- name: Install dependencies
|
|
107
83
|
run: uv sync
|
|
@@ -109,30 +85,23 @@ jobs:
|
|
|
109
85
|
- name: Build package
|
|
110
86
|
run: uv build
|
|
111
87
|
|
|
112
|
-
- name: Upload build artifacts
|
|
113
|
-
uses: actions/upload-artifact@v5
|
|
114
|
-
with:
|
|
115
|
-
name: dist-packages
|
|
116
|
-
path: dist/
|
|
117
|
-
retention-days: 7
|
|
118
|
-
|
|
119
88
|
integration-test:
|
|
120
89
|
name: Integration Test (Self-Test)
|
|
121
90
|
runs-on: ubuntu-latest
|
|
122
91
|
needs: [lint, test]
|
|
123
92
|
steps:
|
|
124
93
|
- name: Checkout code
|
|
125
|
-
uses: actions/checkout@v5
|
|
94
|
+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
|
|
126
95
|
|
|
127
96
|
- name: Set up Python
|
|
128
|
-
uses: actions/setup-python@v6
|
|
97
|
+
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6
|
|
129
98
|
with:
|
|
130
99
|
python-version: "3.12"
|
|
131
100
|
|
|
132
101
|
- name: Install uv
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
102
|
+
uses: astral-sh/setup-uv@5dbc9fba7434435c4cd0268139340fa3696d98f3 # v7
|
|
103
|
+
with:
|
|
104
|
+
enable-cache: true
|
|
136
105
|
|
|
137
106
|
- name: Install dependencies
|
|
138
107
|
run: uv sync
|
|
@@ -3,7 +3,7 @@ name: Release
|
|
|
3
3
|
on:
|
|
4
4
|
push:
|
|
5
5
|
tags:
|
|
6
|
-
- "v*.*.*"
|
|
6
|
+
- "v*.*.*"
|
|
7
7
|
|
|
8
8
|
permissions:
|
|
9
9
|
contents: write
|
|
@@ -17,17 +17,17 @@ jobs:
|
|
|
17
17
|
|
|
18
18
|
steps:
|
|
19
19
|
- name: Checkout code
|
|
20
|
-
uses: actions/checkout@v5
|
|
20
|
+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
|
|
21
21
|
with:
|
|
22
22
|
fetch-depth: 0 # Full history for changelog generation
|
|
23
23
|
|
|
24
24
|
- name: Set up Python
|
|
25
|
-
uses: actions/setup-python@v6
|
|
25
|
+
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6
|
|
26
26
|
with:
|
|
27
27
|
python-version: "3.12"
|
|
28
28
|
|
|
29
29
|
- name: Install uv
|
|
30
|
-
uses: astral-sh/setup-uv@v7
|
|
30
|
+
uses: astral-sh/setup-uv@5dbc9fba7434435c4cd0268139340fa3696d98f3 # v7
|
|
31
31
|
with:
|
|
32
32
|
enable-cache: true
|
|
33
33
|
|
|
@@ -66,9 +66,9 @@ jobs:
|
|
|
66
66
|
echo "Generated changelog with $COMMIT_COUNT commits"
|
|
67
67
|
|
|
68
68
|
- name: Create GitHub Release
|
|
69
|
-
uses: softprops/action-gh-release@v2
|
|
69
|
+
uses: softprops/action-gh-release@6da8fa9354ddfdc4aeace5fc48d7f679b5214090 # v2
|
|
70
70
|
with:
|
|
71
|
-
name:
|
|
71
|
+
name: ${{ steps.get_version.outputs.tag }}
|
|
72
72
|
body_path: CHANGELOG.txt
|
|
73
73
|
files: |
|
|
74
74
|
dist/*.whl
|
|
@@ -88,6 +88,56 @@ jobs:
|
|
|
88
88
|
env:
|
|
89
89
|
UV_PUBLISH_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
|
|
90
90
|
|
|
91
|
+
- name: Create Release Summary
|
|
92
|
+
if: always()
|
|
93
|
+
run: |
|
|
94
|
+
VERSION="${{ steps.get_version.outputs.version }}"
|
|
95
|
+
TAG="${{ steps.get_version.outputs.tag }}"
|
|
96
|
+
IS_PRERELEASE="${{ contains(steps.get_version.outputs.version, 'rc') || contains(steps.get_version.outputs.version, 'beta') || contains(steps.get_version.outputs.version, 'alpha') }}"
|
|
97
|
+
|
|
98
|
+
# Extract major and minor versions
|
|
99
|
+
MAJOR=$(echo "$VERSION" | cut -d. -f1)
|
|
100
|
+
MINOR=$(echo "$VERSION" | cut -d. -f1-2)
|
|
101
|
+
|
|
102
|
+
cat >> $GITHUB_STEP_SUMMARY << EOF
|
|
103
|
+
# 🚀 Release Summary
|
|
104
|
+
|
|
105
|
+
## 📦 Package Information
|
|
106
|
+
- **Package**: \`iam-policy-validator\`
|
|
107
|
+
- **Version**: \`$VERSION\`
|
|
108
|
+
- **Tag**: \`$TAG\`
|
|
109
|
+
|
|
110
|
+
## 📋 What Was Published
|
|
111
|
+
|
|
112
|
+
### GitHub Release
|
|
113
|
+
- ✅ Created release: [$TAG](https://github.com/${{ github.repository }}/releases/tag/$TAG)
|
|
114
|
+
- 📄 Changelog generated from commits
|
|
115
|
+
- 📦 Artifacts attached: wheel + source distribution
|
|
116
|
+
|
|
117
|
+
### PyPI
|
|
118
|
+
$(if [ "$IS_PRERELEASE" = "false" ]; then echo "- ✅ Published to [PyPI](https://pypi.org/project/iam-policy-validator/)"; else echo "- ⏭️ Skipped (pre-release version)"; fi)
|
|
119
|
+
|
|
120
|
+
### Version Tags
|
|
121
|
+
- 🏷️ Major tag: \`v$MAJOR\`
|
|
122
|
+
- 🏷️ Minor tag: \`v$MINOR\`
|
|
123
|
+
- 🏷️ Full tag: \`v$VERSION\`
|
|
124
|
+
|
|
125
|
+
## 🔗 Quick Links
|
|
126
|
+
- [📦 PyPI Package](https://pypi.org/project/iam-policy-validator/)
|
|
127
|
+
- [📚 GitHub Release](https://github.com/${{ github.repository }}/releases/tag/$TAG)
|
|
128
|
+
- [📖 Repository](https://github.com/${{ github.repository }})
|
|
129
|
+
|
|
130
|
+
## 📥 Installation
|
|
131
|
+
\`\`\`bash
|
|
132
|
+
pip install iam-policy-validator==$VERSION
|
|
133
|
+
\`\`\`
|
|
134
|
+
|
|
135
|
+
or use the latest:
|
|
136
|
+
\`\`\`bash
|
|
137
|
+
pip install iam-policy-validator
|
|
138
|
+
\`\`\`
|
|
139
|
+
EOF
|
|
140
|
+
|
|
91
141
|
update-action-versions:
|
|
92
142
|
name: Update Major/Minor Tag References
|
|
93
143
|
runs-on: ubuntu-latest
|
|
@@ -95,7 +145,7 @@ jobs:
|
|
|
95
145
|
|
|
96
146
|
steps:
|
|
97
147
|
- name: Checkout code
|
|
98
|
-
uses: actions/checkout@v5
|
|
148
|
+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
|
|
99
149
|
|
|
100
150
|
- name: Configure Git
|
|
101
151
|
run: |
|
|
@@ -113,7 +163,7 @@ jobs:
|
|
|
113
163
|
git push origin "v$MAJOR" --force
|
|
114
164
|
|
|
115
165
|
# Update vX.Y tag (e.g., v1.2)
|
|
116
|
-
git tag -fa "v$MINOR" -m "
|
|
166
|
+
git tag -fa "v$MINOR" -m "Updated v$MINOR to $VERSION"
|
|
117
167
|
git push origin "v$MINOR" --force
|
|
118
168
|
|
|
119
169
|
echo "Updated tags: v$MAJOR and v$MINOR to point to $VERSION"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: iam-policy-validator
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.3
|
|
4
4
|
Summary: Validate AWS IAM policies for correctness and security using AWS Service Reference API
|
|
5
5
|
Project-URL: Homepage, https://github.com/boogy/iam-policy-validator
|
|
6
6
|
Project-URL: Documentation, https://github.com/boogy/iam-policy-validator/tree/main/docs
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/access-analyzer/example1.json
RENAMED
|
File without changes
|
{iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/access-analyzer/example2.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/configs/none_of_example.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/examples/github-actions/action-examples.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/checks/action_validation.py
RENAMED
|
File without changes
|
|
File without changes
|
{iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/checks/policy_size.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/checks/sid_uniqueness.py
RENAMED
|
File without changes
|
{iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/commands/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/commands/post_to_pr.py
RENAMED
|
File without changes
|
{iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/commands/validate.py
RENAMED
|
File without changes
|
|
File without changes
|
{iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/core/access_analyzer.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/core/check_registry.py
RENAMED
|
File without changes
|
|
File without changes
|
{iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/core/config_loader.py
RENAMED
|
File without changes
|
{iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/core/formatters/__init__.py
RENAMED
|
File without changes
|
{iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/core/formatters/base.py
RENAMED
|
File without changes
|
{iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/core/formatters/console.py
RENAMED
|
File without changes
|
{iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/core/formatters/csv.py
RENAMED
|
File without changes
|
{iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/core/formatters/html.py
RENAMED
|
File without changes
|
{iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/core/formatters/json.py
RENAMED
|
File without changes
|
{iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/core/formatters/markdown.py
RENAMED
|
File without changes
|
{iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/core/formatters/sarif.py
RENAMED
|
File without changes
|
|
File without changes
|
{iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/core/policy_checks.py
RENAMED
|
File without changes
|
{iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/core/policy_loader.py
RENAMED
|
File without changes
|
{iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/core/pr_commenter.py
RENAMED
|
File without changes
|
|
File without changes
|
{iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/integrations/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/iam_validator/integrations/ms_teams.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/tests/test_action_condition_enforcement.py
RENAMED
|
File without changes
|
{iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/tests/test_action_validation_check.py
RENAMED
|
File without changes
|
{iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/tests/test_aws_fetcher_wildcards.py
RENAMED
|
File without changes
|
{iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/tests/test_aws_global_conditions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/tests/test_custom_policy_checks.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/tests/test_resource_validation_check.py
RENAMED
|
File without changes
|
{iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/tests/test_security_best_practices.py
RENAMED
|
File without changes
|
{iam_policy_validator-1.0.2 → iam_policy_validator-1.0.3}/tests/test_sid_uniqueness_check.py
RENAMED
|
File without changes
|
|
File without changes
|