cloudsplaining 0.8.1__tar.gz → 0.8.2__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.
- {cloudsplaining-0.8.1/cloudsplaining.egg-info → cloudsplaining-0.8.2}/PKG-INFO +43 -1
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/README.md +41 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/bin/version.py +1 -1
- cloudsplaining-0.8.2/cloudsplaining/output/dist/js/index.js +63 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/report.py +6 -0
- cloudsplaining-0.8.2/cloudsplaining/output/src/App.vue +197 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/routes/routes.js +21 -11
- cloudsplaining-0.8.2/cloudsplaining/output/src/views/Appendices.vue +21 -0
- cloudsplaining-0.8.2/cloudsplaining/output/src/views/Guidance.vue +21 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/template.html +8 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/scan/role_details.py +1 -3
- cloudsplaining-0.8.2/cloudsplaining/shared/template_config.py +41 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2/cloudsplaining.egg-info}/PKG-INFO +43 -1
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining.egg-info/SOURCES.txt +1 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/pyproject.toml +5 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/setup.py +1 -0
- cloudsplaining-0.8.1/cloudsplaining/output/dist/js/index.js +0 -63
- cloudsplaining-0.8.1/cloudsplaining/output/src/App.vue +0 -174
- cloudsplaining-0.8.1/cloudsplaining/output/src/views/Appendices.vue +0 -12
- cloudsplaining-0.8.1/cloudsplaining/output/src/views/Guidance.vue +0 -12
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/LICENSE +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/MANIFEST.in +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/__init__.py +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/bin/__init__.py +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/bin/cli.py +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/command/__init__.py +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/command/create_exclusions_file.py +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/command/create_multi_account_config_file.py +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/command/download.py +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/command/expand_policy.py +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/command/scan.py +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/command/scan_multi_account.py +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/command/scan_policy_file.py +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/__init__.py +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/dist/index.html +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/dist/js/chunk-vendors.js +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/policy_finding.py +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/public/index.html +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/assets/1-overview.md +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/assets/2-triage-guidance.md +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/assets/3-remediation-guidance.md +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/assets/4-validation.md +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/assets/definition-assumable-by-compute-service.md +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/assets/definition-credentials-exposure.md +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/assets/definition-data-exfiltration.md +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/assets/definition-infrastructure-modification.md +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/assets/definition-privilege-escalation.md +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/assets/definition-resource-exposure.md +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/assets/definition-service-wildcard.md +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/assets/glossary.md +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/assets/how-do-i-validate-results.md +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/assets/identifying-false-positives.md +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/assets/logo.png +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/assets/summary.md +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/assets/what-should-i-do.md +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/components/Appendix.vue +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/components/Button.vue +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/components/Glossary.vue +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/components/Guidance.vue +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/components/InlinePolicies.vue +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/components/LinkToFinding.vue +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/components/ManagedPolicies.vue +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/components/PolicyTable.vue +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/components/Principals.vue +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/components/ReportMetadata.vue +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/components/Summary.vue +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/components/TaskTable.vue +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/components/charts/SummaryFindings.vue +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/components/finding/AssumeRoleDetails.vue +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/components/finding/FindingCard.vue +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/components/finding/FindingDetails.vue +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/components/finding/PolicyDocumentDetails.vue +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/components/finding/PrivilegeEscalationDetails.vue +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/components/finding/PrivilegeEscalationFormat.vue +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/components/finding/RiskAlertIndicators.vue +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/components/finding/StandardRiskDetails.vue +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/components/principals/PrincipalMetadata.vue +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/components/principals/RisksPerPrincipal.vue +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/main.js +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/sampleData.js +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/test/groups-test.js +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/test/inline-policies-test.js +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/test/managed-policies-test.js +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/test/other-test.js +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/test/principals-test.js +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/test/roles-test.js +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/test/task-table-test.js +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/util/glossary.js +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/util/groups.js +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/util/inline-policies.js +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/util/managed-policies.js +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/util/other.js +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/util/principals.js +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/util/roles.js +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/util/task-table.js +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/views/AwsPolicies.vue +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/views/CustomerPolicies.vue +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/views/IamPrincipals.vue +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/views/InlinePolicies.vue +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/output/src/views/Summary.vue +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/py.typed +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/scan/__init__.py +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/scan/assume_role_policy_document.py +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/scan/authorization_details.py +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/scan/group_details.py +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/scan/inline_policy.py +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/scan/managed_policy_detail.py +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/scan/policy_document.py +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/scan/resource_policy_document.py +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/scan/statement_detail.py +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/scan/user_details.py +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/shared/__init__.py +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/shared/aws_login.py +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/shared/constants.py +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/shared/default-exclusions.yml +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/shared/exceptions.py +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/shared/exclusions.py +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/shared/multi-account-config.yml +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/shared/utils.py +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining/shared/validation.py +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining.egg-info/dependency_links.txt +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining.egg-info/entry_points.txt +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining.egg-info/requires.txt +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining.egg-info/top_level.txt +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/cloudsplaining.egg-info/zip-safe +0 -0
- {cloudsplaining-0.8.1 → cloudsplaining-0.8.2}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: cloudsplaining
|
|
3
|
-
Version: 0.8.
|
|
3
|
+
Version: 0.8.2
|
|
4
4
|
Summary: AWS IAM Security Assessment tool that identifies violations of least privilege and generates a risk-prioritized HTML report.
|
|
5
5
|
Home-page: https://github.com/salesforce/cloudsplaining
|
|
6
6
|
Author: Kinnaird McQuade
|
|
@@ -19,6 +19,7 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
19
19
|
Classifier: Programming Language :: Python :: 3.11
|
|
20
20
|
Classifier: Programming Language :: Python :: 3.12
|
|
21
21
|
Classifier: Programming Language :: Python :: 3.13
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
22
23
|
Classifier: License :: OSI Approved :: MIT License
|
|
23
24
|
Classifier: Operating System :: OS Independent
|
|
24
25
|
Requires-Python: >=3.9
|
|
@@ -359,6 +360,47 @@ cloudsplaining scan-multi-account \
|
|
|
359
360
|
|
|
360
361
|
> Note that if you run the above without the `--profile` flag, it will execute in the standard [AWS Credentials order of precedence](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/credentials.html#credentials-default) (i.e., Environment variables, credentials profiles, ECS container credentials, then finally EC2 Instance Profile credentials).
|
|
361
362
|
|
|
363
|
+
## Custom Guidance and Appendices
|
|
364
|
+
|
|
365
|
+
Cloudsplaining supports customizing the Guidance and Appendices sections of the HTML report to include organization-specific security recommendations and documentation.
|
|
366
|
+
|
|
367
|
+
### How It Works
|
|
368
|
+
|
|
369
|
+
Place HTML files in your project root directory:
|
|
370
|
+
|
|
371
|
+
- `custom-guidance.html` - Custom security guidance content
|
|
372
|
+
- `custom-appendices.html` - Custom appendices content
|
|
373
|
+
|
|
374
|
+
### Behavior
|
|
375
|
+
|
|
376
|
+
- **Files don't exist**: Shows default AWS security advice
|
|
377
|
+
- **Files exist with content**: Shows your custom HTML content
|
|
378
|
+
- **Files exist but are empty**: Hides the tabs entirely
|
|
379
|
+
- **Mixed configuration**: Each tab works independently
|
|
380
|
+
|
|
381
|
+
### Example Usage
|
|
382
|
+
|
|
383
|
+
```bash
|
|
384
|
+
# Create custom guidance
|
|
385
|
+
echo '<h1>Company Security Guidelines</h1>
|
|
386
|
+
<p>Follow these organization-specific steps:</p>
|
|
387
|
+
<ul>
|
|
388
|
+
<li>Review with security team</li>
|
|
389
|
+
<li>Document in JIRA ticket</li>
|
|
390
|
+
<li>Get approval before remediation</li>
|
|
391
|
+
</ul>' > custom-guidance.html
|
|
392
|
+
|
|
393
|
+
# Create custom appendices
|
|
394
|
+
echo '<h1>Internal Resources</h1>
|
|
395
|
+
<p>Additional company resources:</p>
|
|
396
|
+
<ul>
|
|
397
|
+
<li><a href="https://internal.company.com/security">Security Portal</a></li>
|
|
398
|
+
<li><a href="https://wiki.company.com/iam">IAM Best Practices</a></li>
|
|
399
|
+
</ul>' > custom-appendices.html
|
|
400
|
+
```
|
|
401
|
+
|
|
402
|
+
# Generate report with custom content
|
|
403
|
+
cloudsplaining scan --input-file account-data.json --output reports/
|
|
362
404
|
|
|
363
405
|
## Cheatsheet
|
|
364
406
|
|
|
@@ -332,6 +332,47 @@ cloudsplaining scan-multi-account \
|
|
|
332
332
|
|
|
333
333
|
> Note that if you run the above without the `--profile` flag, it will execute in the standard [AWS Credentials order of precedence](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/credentials.html#credentials-default) (i.e., Environment variables, credentials profiles, ECS container credentials, then finally EC2 Instance Profile credentials).
|
|
334
334
|
|
|
335
|
+
## Custom Guidance and Appendices
|
|
336
|
+
|
|
337
|
+
Cloudsplaining supports customizing the Guidance and Appendices sections of the HTML report to include organization-specific security recommendations and documentation.
|
|
338
|
+
|
|
339
|
+
### How It Works
|
|
340
|
+
|
|
341
|
+
Place HTML files in your project root directory:
|
|
342
|
+
|
|
343
|
+
- `custom-guidance.html` - Custom security guidance content
|
|
344
|
+
- `custom-appendices.html` - Custom appendices content
|
|
345
|
+
|
|
346
|
+
### Behavior
|
|
347
|
+
|
|
348
|
+
- **Files don't exist**: Shows default AWS security advice
|
|
349
|
+
- **Files exist with content**: Shows your custom HTML content
|
|
350
|
+
- **Files exist but are empty**: Hides the tabs entirely
|
|
351
|
+
- **Mixed configuration**: Each tab works independently
|
|
352
|
+
|
|
353
|
+
### Example Usage
|
|
354
|
+
|
|
355
|
+
```bash
|
|
356
|
+
# Create custom guidance
|
|
357
|
+
echo '<h1>Company Security Guidelines</h1>
|
|
358
|
+
<p>Follow these organization-specific steps:</p>
|
|
359
|
+
<ul>
|
|
360
|
+
<li>Review with security team</li>
|
|
361
|
+
<li>Document in JIRA ticket</li>
|
|
362
|
+
<li>Get approval before remediation</li>
|
|
363
|
+
</ul>' > custom-guidance.html
|
|
364
|
+
|
|
365
|
+
# Create custom appendices
|
|
366
|
+
echo '<h1>Internal Resources</h1>
|
|
367
|
+
<p>Additional company resources:</p>
|
|
368
|
+
<ul>
|
|
369
|
+
<li><a href="https://internal.company.com/security">Security Portal</a></li>
|
|
370
|
+
<li><a href="https://wiki.company.com/iam">IAM Best Practices</a></li>
|
|
371
|
+
</ul>' > custom-appendices.html
|
|
372
|
+
```
|
|
373
|
+
|
|
374
|
+
# Generate report with custom content
|
|
375
|
+
cloudsplaining scan --input-file account-data.json --output reports/
|
|
335
376
|
|
|
336
377
|
## Cheatsheet
|
|
337
378
|
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
# pylint: disable=missing-module-docstring
|
|
2
|
-
__version__ = "0.8.
|
|
2
|
+
__version__ = "0.8.2"
|