ic-code 1.7.1__tar.gz → 1.7.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.
- ic_code-1.7.2/PKG-INFO +688 -0
- ic_code-1.7.2/README.md +587 -0
- ic_code-1.7.2/docs/installation.md +79 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/pyproject.toml +1 -1
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/__init__.py +1 -1
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/cli.py +12 -1
- ic_code-1.7.2/src/ic_code.egg-info/PKG-INFO +688 -0
- ic_code-1.7.1/PKG-INFO +0 -575
- ic_code-1.7.1/README.md +0 -474
- ic_code-1.7.1/docs/installation.md +0 -57
- ic_code-1.7.1/src/ic_code.egg-info/PKG-INFO +0 -575
- {ic_code-1.7.1 → ic_code-1.7.2}/LICENSE +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/MANIFEST.in +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/SECURITY.md +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/config/default.yaml +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/docs/README.md +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/docs/aws/README.md +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/docs/cloudflare/README.md +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/docs/gcp/README.md +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/docs/oci/README.md +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/docs/release-guide.md +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/docs/security.md +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/docs/ssh/README.md +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/docs/tencent/README.md +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/docs/troubleshooting.md +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/docs/user_guide.md +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/requirements.txt +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/scripts/bump-version.sh +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/scripts/cf_edge_nsg_make/cf_edge_nsg_make.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/scripts/ci-detect-platforms.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/scripts/ci-generate-matrix.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/scripts/ci-smoke-test.sh +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/scripts/deploy.sh +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/scripts/oracle-policy/user_policy.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/setup.cfg +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/setup.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/common/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/common/gather_env.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/common/gcp_config_validator.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/common/gcp_monitoring.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/common/gcp_utils.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/common/log.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/common/progress_decorator.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/common/slack.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/common/utils.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/commands/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/commands/config.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/commands/security.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/compat/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/compat/cli.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/compat/common.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/config/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/config/cleanup.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/config/docs_organizer.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/config/external.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/config/installer.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/config/manager.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/config/migration.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/config/migration_utils.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/config/path_manager.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/config/schema.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/config/secrets.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/config/security.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/core/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/core/dependency_validator.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/core/desc_helper.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/core/interfaces/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/core/interfaces/command.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/core/interfaces/formatter.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/core/interfaces/result.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/core/logging.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/core/platform_discovery.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/core/session.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/core/silence_logging.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/cloudfront/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/cloudfront/info.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/codepipeline/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/codepipeline/build.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/codepipeline/deploy.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/disk/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/disk/info.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/ebs/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/ebs/info.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/ebs/mock_data.json +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/ec2/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/ec2/desc.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/ec2/info.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/ec2/list_tags.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/ec2/tag_check.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/ecs/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/ecs/info.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/ecs/service.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/ecs/task.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/eks/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/eks/addons.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/eks/fargate.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/eks/info.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/eks/nodes.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/eks/pods.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/eks/update_config.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/fargate/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/fargate/info.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/healthdashboard/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/healthdashboard/reboot.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/iam/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/iam/_helpers.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/iam/check.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/iam/policy.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/iam/role.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/iam/user.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/lb/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/lb/desc.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/lb/info.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/lb/list_tags.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/lb/tag_check.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/msk/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/msk/broker.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/msk/info.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/nat/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/nat/list_tags.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/nat/tag_check.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/profile/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/profile/info.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/profile/switch.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/rds/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/rds/info.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/rds/list_tags.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/rds/tag_check.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/s3/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/s3/info.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/s3/list_tags.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/s3/tag_check.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/sg/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/sg/info.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/vpc/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/vpc/info.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/vpc/list_tags.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/vpc/tag_check.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/vpn/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/aws/vpn/info.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/cloudflare/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/cloudflare/account/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/cloudflare/account/info.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/cloudflare/client.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/cloudflare/dns/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/cloudflare/dns/info.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/cloudflare/dns/list_info.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/cloudflare/rules/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/cloudflare/rules/info.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/cloudflare/traffic/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/cloudflare/traffic/info.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/cloudflare/waf/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/cloudflare/waf/info.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/cloudflare/zone/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/cloudflare/zone/info.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/billing/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/billing/info.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/billing/mock_data.json +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/compute/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/compute/desc.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/compute/info.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/compute/mock_data.json +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/disk/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/disk/info.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/disk/mock_data.json +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/dns/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/dns/info.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/dns/mock_data.json +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/firewall/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/firewall/info.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/firewall/mock_data.json +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/functions/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/functions/info.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/functions/mock_data.json +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/gke/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/gke/info.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/gke/mock_data.json +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/lb/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/lb/desc.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/lb/info.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/lb/mock_data.json +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/profile/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/profile/info.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/profile/mock_data.json +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/project/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/project/info.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/project/mock_data.json +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/run/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/run/info.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/run/mock_data.json +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/sql/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/sql/info.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/sql/mock_data.json +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/storage/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/storage/info.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/storage/mock_data.json +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/vpc/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/vpc/info.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/gcp/vpc/mock_data.json +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/oci/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/oci/common/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/oci/common/utils.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/oci/compartment/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/oci/compartment/info.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/oci/cost/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/oci/cost/credit.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/oci/cost/usage.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/oci/info/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/oci/info/oci_info.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/oci/lb/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/oci/lb/info.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/oci/nsg/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/oci/nsg/info.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/oci/obj/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/oci/obj/info.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/oci/policy/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/oci/policy/info.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/oci/policy/search.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/oci/vcn/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/oci/vcn/info.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/oci/vm/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/oci/vm/info.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/oci/volume/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/oci/volume/info.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/ssh/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/ssh/auto/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/ssh/auto/scan.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/ssh/auto_ssh.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/ssh/policy.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/ssh/server/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/ssh/server/info.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/ssh/server_info.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/cam/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/cam/_helpers.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/cam/check.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/cam/policy.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/cam/role.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/cam/user.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/cbs/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/cbs/info.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/cbs/mock_data.json +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/clb/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/clb/desc.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/clb/info.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/clb/traffic.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/client.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/cvm/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/cvm/desc.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/cvm/info.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/disk/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/disk/info.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/lighthouse/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/lighthouse/firewall.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/lighthouse/info.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/nat/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/nat/info.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/profile/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/profile/info.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/profile/switch.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/sg/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/sg/info.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/tke/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/tke/info.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/vpc/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/platforms/tencent/vpc/info.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/security/__init__.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/security/config.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/security/detector.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/security/guidance.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/security/hooks.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/security/patterns.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic/security/scanner.py +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic_code.egg-info/SOURCES.txt +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic_code.egg-info/dependency_links.txt +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic_code.egg-info/entry_points.txt +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic_code.egg-info/requires.txt +0 -0
- {ic_code-1.7.1 → ic_code-1.7.2}/src/ic_code.egg-info/top_level.txt +0 -0
ic_code-1.7.2/PKG-INFO
ADDED
|
@@ -0,0 +1,688 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: ic-code
|
|
3
|
+
Version: 1.7.2
|
|
4
|
+
Summary: Infrastructure CLI tool for managing AWS, Tencent Cloud, GCP, OCI, CloudFlare, SSH, and more
|
|
5
|
+
Author-email: sykim <cruiser594@gmail.com>
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/dgr009/ic
|
|
8
|
+
Project-URL: Bug Reports, https://github.com/dgr009/ic/issues
|
|
9
|
+
Project-URL: Source, https://github.com/dgr009/ic
|
|
10
|
+
Project-URL: Documentation, https://github.com/dgr009/ic#readme
|
|
11
|
+
Keywords: cli,infrastructure,aws,oci,gcp,cloudflare,ssh,devops,multi-cloud
|
|
12
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: Intended Audience :: System Administrators
|
|
15
|
+
Classifier: Operating System :: OS Independent
|
|
16
|
+
Classifier: Programming Language :: Python :: 3
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
22
|
+
Classifier: Topic :: System :: Systems Administration
|
|
23
|
+
Classifier: Topic :: Utilities
|
|
24
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
25
|
+
Classifier: Environment :: Console
|
|
26
|
+
Requires-Python: <3.14,>=3.9
|
|
27
|
+
Description-Content-Type: text/markdown
|
|
28
|
+
License-File: LICENSE
|
|
29
|
+
Requires-Dist: requests<3.0.0,>=2.31.0
|
|
30
|
+
Requires-Dist: cryptography<50.0.0,>=42.0.0
|
|
31
|
+
Requires-Dist: rich<15.0.0,>=13.0.0
|
|
32
|
+
Requires-Dist: InquirerPy<1.0.0,>=0.3.4
|
|
33
|
+
Requires-Dist: tqdm<5.0.0,>=4.67.0
|
|
34
|
+
Requires-Dist: python-dotenv<2.0.0,>=1.0.0
|
|
35
|
+
Requires-Dist: python-dateutil<3.0.0,>=2.9.0
|
|
36
|
+
Requires-Dist: PyYAML<7.0.0,>=6.0.1
|
|
37
|
+
Requires-Dist: click<9.0.0,>=8.1.0
|
|
38
|
+
Requires-Dist: docutils<1.0.0,>=0.19
|
|
39
|
+
Requires-Dist: invoke<3.0.0,>=2.2.0
|
|
40
|
+
Requires-Dist: jsonschema<5.0.0,>=4.23.0
|
|
41
|
+
Requires-Dist: watchdog<6.0.0,>=4.0.0
|
|
42
|
+
Requires-Dist: cerberus<2.0.0,>=1.3.5
|
|
43
|
+
Requires-Dist: pydantic<3.0.0,>=2.7.0
|
|
44
|
+
Requires-Dist: packaging<25.0,>=24.0
|
|
45
|
+
Requires-Dist: setuptools<76.0.0,>=69.0.0
|
|
46
|
+
Provides-Extra: aws
|
|
47
|
+
Requires-Dist: boto3<2.0.0,>=1.34.0; extra == "aws"
|
|
48
|
+
Requires-Dist: botocore<2.0.0,>=1.34.0; extra == "aws"
|
|
49
|
+
Requires-Dist: awscli<2.0.0,>=1.32.0; extra == "aws"
|
|
50
|
+
Provides-Extra: tencent
|
|
51
|
+
Requires-Dist: tencentcloud-sdk-python<4.0.0,>=3.0.0; extra == "tencent"
|
|
52
|
+
Provides-Extra: oci
|
|
53
|
+
Requires-Dist: oci<3.0.0,>=2.149.0; extra == "oci"
|
|
54
|
+
Provides-Extra: gcp
|
|
55
|
+
Requires-Dist: google-cloud-compute<2.0.0,>=1.36.0; extra == "gcp"
|
|
56
|
+
Requires-Dist: google-cloud-container<3.0.0,>=2.44.0; extra == "gcp"
|
|
57
|
+
Requires-Dist: google-cloud-storage<3.0.0,>=2.18.0; extra == "gcp"
|
|
58
|
+
Requires-Dist: google-cloud-functions<2.0.0,>=1.16.0; extra == "gcp"
|
|
59
|
+
Requires-Dist: google-cloud-run<1.0.0,>=0.11.0; extra == "gcp"
|
|
60
|
+
Requires-Dist: google-cloud-billing<2.0.0,>=1.13.0; extra == "gcp"
|
|
61
|
+
Requires-Dist: google-cloud-dns<1.0.0,>=0.34.0; extra == "gcp"
|
|
62
|
+
Requires-Dist: google-cloud-resource-manager<2.0.0,>=1.12.0; extra == "gcp"
|
|
63
|
+
Requires-Dist: google-auth<3.0.0,>=2.29.0; extra == "gcp"
|
|
64
|
+
Requires-Dist: google-auth-oauthlib<2.0.0,>=1.2.0; extra == "gcp"
|
|
65
|
+
Requires-Dist: google-auth-httplib2<1.0.0,>=0.2.0; extra == "gcp"
|
|
66
|
+
Provides-Extra: ssh
|
|
67
|
+
Requires-Dist: paramiko<5.0.0,>=3.4.0; extra == "ssh"
|
|
68
|
+
Requires-Dist: netifaces<1.0.0,>=0.11.0; extra == "ssh"
|
|
69
|
+
Provides-Extra: k8s
|
|
70
|
+
Requires-Dist: kubernetes<32.0.0,>=29.0.0; extra == "k8s"
|
|
71
|
+
Provides-Extra: all
|
|
72
|
+
Requires-Dist: boto3<2.0.0,>=1.34.0; extra == "all"
|
|
73
|
+
Requires-Dist: botocore<2.0.0,>=1.34.0; extra == "all"
|
|
74
|
+
Requires-Dist: awscli<2.0.0,>=1.32.0; extra == "all"
|
|
75
|
+
Requires-Dist: tencentcloud-sdk-python<4.0.0,>=3.0.0; extra == "all"
|
|
76
|
+
Requires-Dist: oci<3.0.0,>=2.149.0; extra == "all"
|
|
77
|
+
Requires-Dist: google-cloud-compute<2.0.0,>=1.36.0; extra == "all"
|
|
78
|
+
Requires-Dist: google-cloud-container<3.0.0,>=2.44.0; extra == "all"
|
|
79
|
+
Requires-Dist: google-cloud-storage<3.0.0,>=2.18.0; extra == "all"
|
|
80
|
+
Requires-Dist: google-cloud-functions<2.0.0,>=1.16.0; extra == "all"
|
|
81
|
+
Requires-Dist: google-cloud-run<1.0.0,>=0.11.0; extra == "all"
|
|
82
|
+
Requires-Dist: google-cloud-billing<2.0.0,>=1.13.0; extra == "all"
|
|
83
|
+
Requires-Dist: google-cloud-dns<1.0.0,>=0.34.0; extra == "all"
|
|
84
|
+
Requires-Dist: google-cloud-resource-manager<2.0.0,>=1.12.0; extra == "all"
|
|
85
|
+
Requires-Dist: google-auth<3.0.0,>=2.29.0; extra == "all"
|
|
86
|
+
Requires-Dist: google-auth-oauthlib<2.0.0,>=1.2.0; extra == "all"
|
|
87
|
+
Requires-Dist: google-auth-httplib2<1.0.0,>=0.2.0; extra == "all"
|
|
88
|
+
Requires-Dist: paramiko<5.0.0,>=3.4.0; extra == "all"
|
|
89
|
+
Requires-Dist: netifaces<1.0.0,>=0.11.0; extra == "all"
|
|
90
|
+
Requires-Dist: kubernetes<32.0.0,>=29.0.0; extra == "all"
|
|
91
|
+
Provides-Extra: dev
|
|
92
|
+
Requires-Dist: pytest<10.0.0,>=8.0.0; extra == "dev"
|
|
93
|
+
Requires-Dist: pytest-cov<8.0.0,>=5.0.0; extra == "dev"
|
|
94
|
+
Requires-Dist: types-PyYAML>=6.0.0; extra == "dev"
|
|
95
|
+
Requires-Dist: black<25.0.0,>=24.0.0; extra == "dev"
|
|
96
|
+
Requires-Dist: flake8<8.0.0,>=7.0.0; extra == "dev"
|
|
97
|
+
Requires-Dist: mypy<2.0.0,>=1.10.0; extra == "dev"
|
|
98
|
+
Requires-Dist: pyrefly>=1.2.0; extra == "dev"
|
|
99
|
+
Requires-Dist: pre-commit<4.0.0,>=3.7.0; extra == "dev"
|
|
100
|
+
Dynamic: license-file
|
|
101
|
+
|
|
102
|
+
# IC CLI Tool (Infrastructure Commander)
|
|
103
|
+
|
|
104
|
+
[](https://badge.fury.io/py/ic-code)
|
|
105
|
+
[](https://www.python.org/downloads/)
|
|
106
|
+
[](https://opensource.org/licenses/MIT)
|
|
107
|
+
|
|
108
|
+
A production-grade Multi-Cloud & Infrastructure Command Line Interface for inspecting, auditing, and managing cloud resources across **AWS**, **Tencent Cloud**, **Google Cloud Platform (GCP)**, **Oracle Cloud Infrastructure (OCI)**, **CloudFlare**, and **SSH** servers from a single unified terminal workflow.
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## Table of Contents
|
|
113
|
+
|
|
114
|
+
1. [Key Features](#key-features)
|
|
115
|
+
2. [Terminal UI & Output Previews](#terminal-ui--output-previews)
|
|
116
|
+
3. [Supported Platforms & Services](#supported-platforms--services)
|
|
117
|
+
4. [Installation & Initial Setup](#installation--initial-setup)
|
|
118
|
+
5. [Platform Credential & Configuration Guide](#platform-credential--configuration-guide)
|
|
119
|
+
6. [Command Usage Examples](#command-usage-examples)
|
|
120
|
+
7. [Testing & Verification](#testing--verification)
|
|
121
|
+
8. [License](#license)
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## Key Features
|
|
126
|
+
|
|
127
|
+
- **Unified Multi-Cloud CLI**: Consistent `<platform> <service> <command>` syntax across AWS, Tencent Cloud, GCP, OCI, CloudFlare (`cloudflare` / `cf`), and SSH servers.
|
|
128
|
+
- **Smart Auth & Profile Switcher**: One-command atomic switching between personal SSO/STS sessions (`aws login`, `tccli auth login`) and static service account credentials, with real-time STS token expiration tracking and automatic file permission enforcement (`chmod 600`).
|
|
129
|
+
- **Deep IAM & CAM Permission Governance**:
|
|
130
|
+
- **Credential Hygiene (`iam check` / `cam check`)**: Audit console login status, MFA enforcement, password age (60/90-day risk alerts), last console login, and last access key usage.
|
|
131
|
+
- **Entity Permission Mapping (`iam user` / `cam user`)**: Inspect user groups, direct/inline/group-inherited policies, scoped resources, IP/MFA/tag conditions (`aws:SourceIp`, `qcs:ip`), and linked roles.
|
|
132
|
+
- **Policy & Role Analysis (`iam policy|role` / `cam policy|role`)**: Inspect AWS/Tencent managed, custom, and inline policies, attached entities (Users/Groups/Roles), role trust principals, trust conditions (`sts:ExternalId`), and raw policy documents (`-d`).
|
|
133
|
+
- **Concurrent Multi-Account & Multi-Region Execution**: Parallel resource discovery across dozens of cloud accounts/projects and regions simultaneously using `ThreadPoolExecutor` and cross-account `AssumeRole`.
|
|
134
|
+
- **Multiple Output Representations**:
|
|
135
|
+
- **Rich Tables (`-o table`)**: Color-coded status indicators, aligned columns, and account/region grouping.
|
|
136
|
+
- **Hierarchical Trees (`-o tree`)**: Visual dependency and rule trees for Security Groups, Firewalls, IAM/CAM permissions, and GCP folder hierarchies.
|
|
137
|
+
- **Deep Schema Discovery (`desc -l`, `desc -k`)**: Inspect raw cloud resource schemas and extract nested attributes using dot-notation keys.
|
|
138
|
+
- **Spreadsheet Copy Mode (`-p`)**: Clean comma-separated output for instant copy-pasting into spreadsheets or incident reports.
|
|
139
|
+
- **Security First**: Split configuration architecture (`default.yaml` + `secrets.yaml`), automatic credential masking in logs/CLI output, built-in secret scanner (`ic security scan`), and pre-commit hook integration.
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
## Terminal UI & Output Previews
|
|
144
|
+
|
|
145
|
+
### 1. Multi-Account Compute Inspection (`ic tencent cvm info` / `ic aws ec2 info`)
|
|
146
|
+
|
|
147
|
+

|
|
148
|
+
|
|
149
|
+
```text
|
|
150
|
+
$ ic aws ec2 info -a prod-account -r ap-northeast-2 -n api,worker
|
|
151
|
+
┌──────────────┬────────────────┬────────────────────┬─────────────────────┬─────────┬───────────┬──────┬────────┬───────────────┬───────────────┬──────────────────────┬────────────┐
|
|
152
|
+
│ Account │ Region │ Instance Name │ Instance ID │ State │ Type │ vCPU │ Memory │ Private IP │ Public IP │ Security Groups │ Created │
|
|
153
|
+
├──────────────┼────────────────┼────────────────────┼─────────────────────┼─────────┼───────────┼──────┼────────┼───────────────┼───────────────┼──────────────────────┼────────────┤
|
|
154
|
+
│ prod-account │ ap-northeast-2 │ prod-api-server-01 │ i-0a1b2c3d4e5f60001 │ running │ m6i.large │ 2 │ 8 GiB │ 10.20.1.15 │ 203.0.113.10 │ sg-0100 (prod-api) │ 2026-03-15 │
|
|
155
|
+
│ prod-account │ ap-northeast-2 │ prod-worker-node01 │ i-0a1b2c3d4e5f60002 │ running │ c6i.xlarge│ 4 │ 8 GiB │ 10.20.2.42 │ - │ sg-0200 (prod-batch) │ 2026-04-02 │
|
|
156
|
+
└──────────────┴────────────────┴────────────────────┴─────────────────────┴─────────┴───────────┴──────┴────────┴───────────────┴───────────────┴──────────────────────┴────────────┘
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
### 2. IAM / CAM User Permission, Resource & Condition Mapping (`ic aws iam user`)
|
|
160
|
+
|
|
161
|
+
```text
|
|
162
|
+
$ ic aws iam user -a prod-account -n deploy,sre
|
|
163
|
+
┌──────────────┬──────────────┬────────────┬──────────────┬───────────────────────────────────────────┬────────────────────────────────────────────────────────┬─────────────────────────────┐
|
|
164
|
+
│ Account │ User Name │ Login Type │ Groups │ Attached Policies │ Scoped Resources / Conditions │ Linked / Trusted Roles │
|
|
165
|
+
├──────────────┼──────────────┼────────────┼──────────────┼───────────────────────────────────────────┼────────────────────────────────────────────────────────┼─────────────────────────────┤
|
|
166
|
+
│ prod-account │ sre-operator │ User (MFA) │ sre-admins │ [Group:sre-admins] AdministratorAccess │ [IpRestrictInline] │ ProdEksClusterAdminRole │
|
|
167
|
+
│ │ │ │ │ [Inline] IpRestrictInline │ Cond: IpAddress: aws:SourceIp=203.0.113.0/24 │ (Cond: aws:MultiFactor... │
|
|
168
|
+
│ prod-account │ ci-deployer │ Service │ - │ [Managed] AmazonEC2ContainerRegistryPower │ [S3ArtifactDeployPolicy] │ ProdAppDeployRole │
|
|
169
|
+
│ │ │ │ │ [Inline] S3ArtifactDeployPolicy │ Res: s3: prod-artifact-bucket, prod-artifact-buck... │ │
|
|
170
|
+
└──────────────┴──────────────┴────────────┴──────────────┴───────────────────────────────────────────┴────────────────────────────────────────────────────────┴─────────────────────────────┘
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
### 3. Credential Hygiene & Password Age Audit (`ic aws iam check -w`)
|
|
174
|
+
|
|
175
|
+
```text
|
|
176
|
+
$ ic aws iam check -a prod-account -w
|
|
177
|
+
┌──────────────┬──────────────┬───────────────┬─────────┬──────────────┬────────────┬──────────────────┬──────────────────┬────────────┐
|
|
178
|
+
│ Account │ User Name │ Console Login │ MFA │ Password Age │ Last Login │ Active Keys │ Last Key Used │ Created │
|
|
179
|
+
├──────────────┼──────────────┼───────────────┼─────────┼──────────────┼────────────┼──────────────────┼──────────────────┼────────────┤
|
|
180
|
+
│ prod-account │ legacy-admin │ Enabled │ Enabled │ 114d (Warn) │ 2026-09-10 │ 1 (98d) │ 2026-10-28 (ecr) │ 2024-05-12 │
|
|
181
|
+
│ prod-account │ build-bot │ Disabled │ - │ - │ - │ 1 (142d) (Warn) │ 2026-11-01 (s3) │ 2024-08-01 │
|
|
182
|
+
└──────────────┴──────────────┴───────────────┴─────────┴──────────────┴────────────┴──────────────────┴──────────────────┴────────────┘
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
### 4. Hierarchical Tree View (`-o tree`)
|
|
186
|
+
|
|
187
|
+
```text
|
|
188
|
+
$ ic aws sg info -a prod-account -n prod-api -o tree
|
|
189
|
+
AWS Security Groups (prod-account / ap-northeast-2)
|
|
190
|
+
└── prod-api-sg (sg-0100aabbccddeeff0) [vpc-0a1b2c3d]
|
|
191
|
+
├── [Ingress] TCP 443 ← 0.0.0.0/0 (HTTPS public traffic)
|
|
192
|
+
├── [Ingress] TCP 8080 ← sg-0050alb0000000001 (From ALB ingress)
|
|
193
|
+
└── [Egress] ALL ALL → 0.0.0.0/0 (Allow outbound)
|
|
194
|
+
|
|
195
|
+
$ ic tencent cam user -a prod-account -n devops -o tree
|
|
196
|
+
Tencent CAM Users
|
|
197
|
+
└── prod-account (100000000001)
|
|
198
|
+
└── devops-engineer [Type: User | Created: 2025-11-20]
|
|
199
|
+
├── Groups: devops-team
|
|
200
|
+
├── Attached Policies (3)
|
|
201
|
+
│ ├── [Direct] QcloudCVMFullAccess (QCS)
|
|
202
|
+
│ ├── [Group:devops-team] QcloudCLBFullAccess (QCS)
|
|
203
|
+
│ └── [Direct] CustomProdVpcReadOnly (Custom)
|
|
204
|
+
│ ├── Resources: vpc: ap-seoul/vpc-sample01
|
|
205
|
+
│ └── Conditions: ip_equal: qcs:ip=203.0.113.10/32
|
|
206
|
+
└── Trusted Roles (1)
|
|
207
|
+
└── ProdTkeClusterAdminRole
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### 5. Spreadsheet Copy-Paste Mode (`-p`)
|
|
211
|
+
|
|
212
|
+
```text
|
|
213
|
+
$ ic tencent cvm info -a prod-account -p
|
|
214
|
+
Account,Region,InstanceName,InstanceId,State,InstanceType,CPU,Memory(GB),PrivateIP,PublicIP,VPC,SecurityGroups,CreatedTime
|
|
215
|
+
prod-account,ap-seoul,prod-web-01,ins-a1b2c3d4,RUNNING,S5.LARGE8,4,8,10.10.1.11,198.51.100.25,vpc-sample01,sg-web01,2026-02-10 14:20:00
|
|
216
|
+
prod-account,ap-seoul,prod-db-01,ins-e5f6g7h8,RUNNING,S5.2XLARGE32,8,32,10.10.2.20,-,vpc-sample01,sg-db01,2026-02-10 14:25:00
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
221
|
+
## Supported Platforms & Services
|
|
222
|
+
|
|
223
|
+
### 1. AWS Services
|
|
224
|
+
| Category | Commands | Description |
|
|
225
|
+
|---|---|---|
|
|
226
|
+
| **Auth & Profile** | `ic aws profile switch`, `ic aws profile info` | Atomic switching between personal `aws login` STS session and static service credentials; session expiry tracking. |
|
|
227
|
+
| **IAM & Governance** | `ic aws iam check`, `ic aws iam user`, `ic aws iam policy`, `ic aws iam role` | Password/key hygiene audit (`check`), user group/policy/role/condition mapping (`user`), managed & inline policy inspection (`policy`), and role trust/policy analysis (`role`). |
|
|
228
|
+
| **EC2 Compute** | `ic aws ec2 info`, `ic aws ec2 desc` | Instance inventory across accounts/regions, spreadsheet copy mode (`-p`), and dot-notation schema inspection (`desc -l`, `desc -k`). |
|
|
229
|
+
| **Containers (EKS / ECS)** | `ic aws eks info\|nodes\|pods\|addons\|fargate`, `ic aws ecs info\|service\|task` | Kubernetes clusters, node groups, pods, addons, Fargate profiles, and ECS clusters/services/tasks. |
|
|
230
|
+
| **Storage & Databases** | `ic aws ebs info`, `ic aws s3 info\|tag_check`, `ic aws rds info` | EBS volume metrics, S3 bucket inventory & tag compliance auditing, RDS & Aurora cluster inspection. |
|
|
231
|
+
| **Networking & Security** | `ic aws vpc info`, `ic aws vpn info`, `ic aws lb info\|desc`, `ic aws sg info`, `ic aws cloudfront info` | VPCs/Subnets/NAT/VPN, ALB/NLB listener rules & target health, Security Group rules & tree view (`-o tree`), CloudFront distributions. |
|
|
232
|
+
| **Health & Integrations** | `ic aws healthdashboard reboot`, `ic aws msk info\|broker`, `ic aws codepipeline build\|deploy` | Multi-account EC2 scheduled reboot maintenance checks, MSK Kafka clusters, and CodePipeline status. |
|
|
233
|
+
|
|
234
|
+
### 2. Tencent Cloud Services
|
|
235
|
+
| Category | Commands | Description |
|
|
236
|
+
|---|---|---|
|
|
237
|
+
| **Auth & Profile** | `ic tencent profile switch`, `ic tencent profile info` | Dual-mode switching between personal `tccli auth login` STS session and `~/.tencent/credentials` service keys with cross-account `AssumeRole`. |
|
|
238
|
+
| **CAM & Governance** | `ic tencent cam check`, `ic tencent cam user`, `ic tencent cam policy`, `ic tencent cam role` | Sub-account & collaborator password/key audit (`check`), user group/policy/resource/condition/role mapping (`user`), Custom & QCS policy analysis (`policy`), and CAM role trust inspection (`role`). |
|
|
239
|
+
| **CVM & Lighthouse** | `ic tencent cvm info\|desc`, `ic tencent lighthouse info\|firewall` | CVM instances, creation date filter (`-c`), spreadsheet copy mode (`-p`), deep attribute inspection (`desc`), Lighthouse instances & firewall trees (`-o tree`). |
|
|
240
|
+
| **Containers (TKE)** | `ic tencent tke info` | TKE Kubernetes clusters, versions, status, and node pool configurations. |
|
|
241
|
+
| **Storage (CBS)** | `ic tencent cbs info`, `ic tencent disk info` | Cloud Block Storage volume size, type, attachment status, and linked CVM instances. |
|
|
242
|
+
| **Networking & CLB** | `ic tencent clb info\|desc\|traffic`, `ic tencent sg info`, `ic tencent vpc info`, `ic tencent nat info` | CLB listener rules & target health, 7/30-day bandwidth & traffic stats (`clb traffic`), Security Group rules & tree view (`-o tree`), VPCs, Subnets, and NAT Gateways. |
|
|
243
|
+
|
|
244
|
+
### 3. Google Cloud Platform (GCP) Services
|
|
245
|
+
| Category | Commands | Description |
|
|
246
|
+
|---|---|---|
|
|
247
|
+
| **Compute & LB** | `ic gcp compute info\|desc`, `ic gcp lb info\|desc` | Compute Engine VMs (summary & 15-column `-v` view), Forwarding Rules, Target Proxies, URL Maps, Backend Services, and dot-notation schema inspection (`desc`). |
|
|
248
|
+
| **Containers & Serverless** | `ic gcp gke info`, `ic gcp run info`, `ic gcp functions info` | GKE clusters & node pools, Cloud Run services/revisions, 1st & 2nd Gen Cloud Functions. |
|
|
249
|
+
| **Storage & Databases** | `ic gcp sql info`, `ic gcp storage info` | Cloud SQL (MySQL/PostgreSQL/SQL Server) HA/backup status and GCS bucket inventory. |
|
|
250
|
+
| **Networking & DNS** | `ic gcp vpc info`, `ic gcp firewall info`, `ic gcp dns info` | VPC networks/subnets, Ingress/Egress firewall rules, and Cloud DNS managed zones. |
|
|
251
|
+
| **Projects & Billing** | `ic gcp project info`, `ic gcp billing info`, `ic gcp profile info` | Multi-level folder/project hierarchy tree, monthly billing breakdown, and active `gcloud` configurations. |
|
|
252
|
+
|
|
253
|
+
### 4. Oracle Cloud Infrastructure (OCI), CloudFlare & SSH
|
|
254
|
+
| Platform | Commands | Description |
|
|
255
|
+
|---|---|---|
|
|
256
|
+
| **OCI** | `ic oci vm info`, `ic oci aci info`, `ic oci vcn info`, `ic oci lb info`, `ic oci nsg info`, `ic oci volume info`, `ic oci obj info`, `ic oci compartment`, `ic oci policy info\|search`, `ic oci cost usage\|credit` | OCI Compute VMs, Autonomous Container Instances, VCNs, Load Balancers, NSGs, Block/Object Storage, Compartment trees, IAM Policies, and Cost/Billing credits. |
|
|
257
|
+
| **CloudFlare** | `ic cf zone info`, `ic cf dns info` (or `ic cloudflare ...`) | CloudFlare Zone inventory and DNS record inspection with account/zone filtering. |
|
|
258
|
+
| **SSH Server** | `ic ssh info` | Automatic server discovery from `~/.ssh/config`, parallel SSH connectivity & port checks, and configurable host key policies (`auto`, `warning`, `reject`). |
|
|
259
|
+
|
|
260
|
+
---
|
|
261
|
+
|
|
262
|
+
## Installation & Initial Setup
|
|
263
|
+
|
|
264
|
+
### 1. Requirements
|
|
265
|
+
|
|
266
|
+
- **Python**: `>= 3.9, < 3.14` (Python 3.11 or 3.13 recommended)
|
|
267
|
+
- **OS**: macOS, Linux, or Windows (WSL2 / PowerShell)
|
|
268
|
+
- **Optional Cloud CLI Tools** (only required if using native CLI SSO login features):
|
|
269
|
+
- AWS CLI v2 (`aws login` / `aws sso login`)
|
|
270
|
+
- Tencent Cloud CLI (`tccli auth login`)
|
|
271
|
+
- Google Cloud SDK (`gcloud auth application-default login`)
|
|
272
|
+
|
|
273
|
+
### 2. Install from PyPI (Recommended)
|
|
274
|
+
|
|
275
|
+
You can install the lightweight core package or include optional cloud SDK extras for the platforms you manage:
|
|
276
|
+
|
|
277
|
+
```bash
|
|
278
|
+
# Install core package + default dependencies
|
|
279
|
+
pip install ic-code
|
|
280
|
+
|
|
281
|
+
# Or install with specific cloud platform SDK extras
|
|
282
|
+
pip install "ic-code[aws]" # AWS (boto3)
|
|
283
|
+
pip install "ic-code[tencent]" # Tencent Cloud SDK
|
|
284
|
+
pip install "ic-code[gcp]" # Google Cloud SDK libraries
|
|
285
|
+
pip install "ic-code[oci]" # Oracle Cloud Infrastructure SDK
|
|
286
|
+
pip install "ic-code[cloudflare]" # CloudFlare API support
|
|
287
|
+
pip install "ic-code[ssh]" # SSH management (paramiko)
|
|
288
|
+
|
|
289
|
+
# Install all cloud platform extras at once
|
|
290
|
+
pip install "ic-code[all]"
|
|
291
|
+
|
|
292
|
+
# Verify installation
|
|
293
|
+
ic --version
|
|
294
|
+
ic --help
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
> **Tip (Isolated Global CLI Installation with `pipx`)**:
|
|
298
|
+
> ```bash
|
|
299
|
+
> pipx install "ic-code[all]"
|
|
300
|
+
> ```
|
|
301
|
+
|
|
302
|
+
### 3. Install from Source (Development)
|
|
303
|
+
|
|
304
|
+
```bash
|
|
305
|
+
# Clone the repository
|
|
306
|
+
git clone https://github.com/dgr009/ic.git
|
|
307
|
+
cd ic
|
|
308
|
+
|
|
309
|
+
# Create and activate a virtual environment
|
|
310
|
+
python3 -m venv .venv
|
|
311
|
+
source .venv/bin/activate # On Windows: .venv\Scripts\activate
|
|
312
|
+
|
|
313
|
+
# Install in editable mode with all cloud and test dependencies
|
|
314
|
+
pip install --upgrade pip
|
|
315
|
+
pip install -r requirements.txt
|
|
316
|
+
pip install -e .
|
|
317
|
+
|
|
318
|
+
# Verify CLI execution
|
|
319
|
+
ic --version
|
|
320
|
+
ic --help
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
---
|
|
324
|
+
|
|
325
|
+
## Platform Credential & Configuration Guide
|
|
326
|
+
|
|
327
|
+
IC CLI separates non-sensitive preferences from sensitive credentials using a two-file structure under `~/.ic/config/`:
|
|
328
|
+
|
|
329
|
+
```text
|
|
330
|
+
~/.ic/config/
|
|
331
|
+
├── default.yaml # Non-sensitive settings (default regions, worker counts, logging, SSH host policy)
|
|
332
|
+
└── secrets.yaml # Sensitive tokens, account mappings, and role names (chmod 600 recommended)
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
### Step 1: Initialize Configuration Files
|
|
336
|
+
|
|
337
|
+
```bash
|
|
338
|
+
# Interactive setup wizard
|
|
339
|
+
ic config init
|
|
340
|
+
|
|
341
|
+
# Or generate a template for a specific workflow
|
|
342
|
+
ic config init --template aws
|
|
343
|
+
ic config init --template multi-cloud
|
|
344
|
+
|
|
345
|
+
# Validate configuration and inspect masked settings
|
|
346
|
+
ic config validate
|
|
347
|
+
ic config show
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
### Step 2: Configure Cloud Credentials
|
|
351
|
+
|
|
352
|
+
#### A. AWS Credential Setup (`~/.aws/config` & `~/.aws/credentials`)
|
|
353
|
+
|
|
354
|
+
IC CLI automatically reads standard AWS profiles from `~/.aws/config` and `~/.aws/credentials`, and supports one-touch switching between personal STS sessions (`aws login`) and service account keys (`~/.aws/backup/`):
|
|
355
|
+
|
|
356
|
+
```ini
|
|
357
|
+
# ~/.aws/config
|
|
358
|
+
[profile prod-account]
|
|
359
|
+
region = ap-northeast-2
|
|
360
|
+
output = json
|
|
361
|
+
|
|
362
|
+
[profile stage-account]
|
|
363
|
+
role_arn = arn:aws:iam::234567890123:role/OrganizationAccountAccessRole
|
|
364
|
+
source_profile = prod-account
|
|
365
|
+
region = ap-northeast-2
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
```bash
|
|
369
|
+
# Check active AWS profiles and STS token status
|
|
370
|
+
ic aws profile info
|
|
371
|
+
ic aws profile switch
|
|
372
|
+
```
|
|
373
|
+
|
|
374
|
+
#### B. Tencent Cloud Credential Setup (`~/.tencent/credentials` & `secrets.yaml`)
|
|
375
|
+
|
|
376
|
+
IC CLI supports both multi-account `~/.tencent/credentials` (with cross-account `AssumeRole`) and personal `tccli auth login` sessions:
|
|
377
|
+
|
|
378
|
+
```ini
|
|
379
|
+
# ~/.tencent/credentials
|
|
380
|
+
[default]
|
|
381
|
+
region = ap-seoul
|
|
382
|
+
|
|
383
|
+
[main]
|
|
384
|
+
secret_id = AKIDEXAMPLE000000000000000000000
|
|
385
|
+
secret_key = EXAMPLESECRETKEY0000000000000000
|
|
386
|
+
region = ap-seoul
|
|
387
|
+
|
|
388
|
+
[prod-account]
|
|
389
|
+
role_arn = qcs::cam::uin/100000000002:roleName/OrganizationAccountAccessRole
|
|
390
|
+
source_account = main
|
|
391
|
+
region = ap-seoul
|
|
392
|
+
```
|
|
393
|
+
|
|
394
|
+
```bash
|
|
395
|
+
# Check active Tencent Cloud authentication mode and accounts
|
|
396
|
+
ic tencent profile info
|
|
397
|
+
ic tencent profile switch
|
|
398
|
+
```
|
|
399
|
+
|
|
400
|
+
#### C. GCP, OCI, CloudFlare & SSH Setup
|
|
401
|
+
|
|
402
|
+
- **GCP**: Authenticate via Application Default Credentials:
|
|
403
|
+
```bash
|
|
404
|
+
gcloud auth application-default login
|
|
405
|
+
```
|
|
406
|
+
- **OCI**: Configure standard `~/.oci/config` with your tenancy OCID, user OCID, fingerprint, and private key path.
|
|
407
|
+
- **CloudFlare & Multi-Cloud Options (`~/.ic/config/secrets.yaml`)**:
|
|
408
|
+
|
|
409
|
+
```yaml
|
|
410
|
+
# ~/.ic/config/secrets.yaml (Sample - use generic or local values only)
|
|
411
|
+
aws:
|
|
412
|
+
accounts:
|
|
413
|
+
- "prod-account"
|
|
414
|
+
- "stage-account"
|
|
415
|
+
regions:
|
|
416
|
+
- "ap-northeast-2"
|
|
417
|
+
- "us-east-1"
|
|
418
|
+
|
|
419
|
+
tencent:
|
|
420
|
+
root_account: "main"
|
|
421
|
+
root_account_id: "100000000001"
|
|
422
|
+
tccli_role: "OrganizationAccountAccessRole"
|
|
423
|
+
service_role: "ServiceAdminRole"
|
|
424
|
+
isolated_accounts:
|
|
425
|
+
- "isolated-sub-account"
|
|
426
|
+
regions:
|
|
427
|
+
- "ap-seoul"
|
|
428
|
+
- "ap-singapore"
|
|
429
|
+
|
|
430
|
+
gcp:
|
|
431
|
+
project_id: "sample-gcp-project-01"
|
|
432
|
+
regions:
|
|
433
|
+
- "asia-northeast3"
|
|
434
|
+
- "us-central1"
|
|
435
|
+
|
|
436
|
+
oci:
|
|
437
|
+
config_file: "~/.oci/config"
|
|
438
|
+
profile: "DEFAULT"
|
|
439
|
+
|
|
440
|
+
cloudflare:
|
|
441
|
+
email: "admin@example.com"
|
|
442
|
+
api_token: "your-cloudflare-api-token"
|
|
443
|
+
cloudflare_accounts:
|
|
444
|
+
- "Sample-Account"
|
|
445
|
+
cloudflare_zones:
|
|
446
|
+
- "example.com"
|
|
447
|
+
|
|
448
|
+
ssh:
|
|
449
|
+
config_file: "~/.ssh/config"
|
|
450
|
+
key_dir: "~/.ssh"
|
|
451
|
+
host_key_policy: "auto"
|
|
452
|
+
skip_prefixes:
|
|
453
|
+
- "git"
|
|
454
|
+
- "bastion-"
|
|
455
|
+
```
|
|
456
|
+
|
|
457
|
+
---
|
|
458
|
+
|
|
459
|
+
## Command Usage Examples
|
|
460
|
+
|
|
461
|
+
### Common Filtering & Output Options
|
|
462
|
+
|
|
463
|
+
Most resource inspection commands share consistent filtering flags:
|
|
464
|
+
|
|
465
|
+
| Flag | Description | Example |
|
|
466
|
+
|---|---|---|
|
|
467
|
+
| `-a, --account <NAME>` | Filter by account/profile/project name (comma-separated for multiple) | `-a prod-account,stage-account` |
|
|
468
|
+
| `-r, --region <REGION>` | Filter by cloud region (comma-separated) | `-r ap-northeast-2,us-east-1` |
|
|
469
|
+
| `-n, --name <PATTERN>` | Case-insensitive partial match filter (comma-separated for OR search) | `-n "api,worker"` |
|
|
470
|
+
| `-c, --created <EXPR>` | Filter by creation date (`YYYY-MM-DD`, range `~`, `>=`, `<=`, `>`, `<`) | `-c ">=2026-01-01"` |
|
|
471
|
+
| `-o, --output <FMT>` | Output format (`table`, `tree`, `json`, `yaml`) | `-o tree` |
|
|
472
|
+
| `-v, --verbose` | Show extended columns, full ARNs, or full resource lists without truncation | `-v` |
|
|
473
|
+
| `-p, --paste` | Output clean comma-separated values for spreadsheet copy-pasting | `-p` |
|
|
474
|
+
|
|
475
|
+
---
|
|
476
|
+
|
|
477
|
+
### 1. AWS Command Examples
|
|
478
|
+
|
|
479
|
+
```bash
|
|
480
|
+
# --- Authentication & Profile Management ---
|
|
481
|
+
ic aws profile info # Inspect all profiles and session status
|
|
482
|
+
ic aws profile switch # Check current auth mode (login vs service)
|
|
483
|
+
ic aws profile switch login # Switch to personal 'aws login' STS session
|
|
484
|
+
ic aws profile switch service # Switch to static service credentials
|
|
485
|
+
|
|
486
|
+
# --- IAM Security Audit & Permission Governance ---
|
|
487
|
+
# 1) Credential & Password Hygiene Audit (check)
|
|
488
|
+
ic aws iam check # Audit console login, MFA, password age, key usage
|
|
489
|
+
ic aws iam check -w # Filter accounts with 90+ day warnings
|
|
490
|
+
ic aws iam check --mfa disabled -t user # Find console users without MFA enabled
|
|
491
|
+
ic aws iam check -c ">=2026-01-01" -v # Filter by creation date with verbose key IDs
|
|
492
|
+
|
|
493
|
+
# 2) User Permission, Resource & Condition Inspection (user)
|
|
494
|
+
ic aws iam user # Inspect users, groups, policies, resources/conditions, roles
|
|
495
|
+
ic aws iam user -a prod-account -n deploy,admin # Filter by account and user name patterns
|
|
496
|
+
ic aws iam user -g sre-admins --policy AdministratorAccess # Filter by group or attached policy name
|
|
497
|
+
ic aws iam user --resource s3 --condition 203.0.113.0/24 # Find users restricted by specific resource or IP condition
|
|
498
|
+
ic aws iam user -o tree # Render user permission hierarchy as a tree
|
|
499
|
+
|
|
500
|
+
# 3) IAM Policy Inspection (policy)
|
|
501
|
+
ic aws iam policy # List customer-managed and inline policies
|
|
502
|
+
ic aws iam policy -t custom --attached # Show only attached customer-managed policies
|
|
503
|
+
ic aws iam policy -t inline --entity sre-operator # Show inline policies attached to a specific entity
|
|
504
|
+
ic aws iam policy --unattached # Identify unused policies for cleanup
|
|
505
|
+
ic aws iam policy -n DeployPolicy --resource bucket -d # Print full JSON policy statement document (-d)
|
|
506
|
+
|
|
507
|
+
# 4) IAM Role & Trust Relationship Inspection (role)
|
|
508
|
+
ic aws iam role # List IAM roles, trusted principals, and attached policies
|
|
509
|
+
ic aws iam role -t user --no-slr # Show cross-account/user roles excluding Service-Linked Roles
|
|
510
|
+
ic aws iam role --trust ec2,eks --policy Admin # Filter by trusted service/principal and policy
|
|
511
|
+
ic aws iam role --condition ExternalId -o tree # Inspect roles requiring ExternalId in tree view
|
|
512
|
+
|
|
513
|
+
# --- EC2, Containers & Maintenance ---
|
|
514
|
+
ic aws healthdashboard reboot # Check scheduled EC2 reboot maintenance across all accounts
|
|
515
|
+
ic aws healthdashboard reboot -a prod-account --all-status # Include historical/completed maintenance events
|
|
516
|
+
|
|
517
|
+
ic aws ec2 info -a prod-account -n "web,api" # List EC2 instances matching 'web' or 'api'
|
|
518
|
+
ic aws ec2 info -p # Output EC2 inventory in spreadsheet copy format
|
|
519
|
+
ic aws ec2 desc -l # List queryable EC2 dot-notation schema keys
|
|
520
|
+
ic aws ec2 desc -k InstanceId,State.Name,PrivateIpAddress # Extract specific EC2 attributes
|
|
521
|
+
|
|
522
|
+
ic aws eks info # List EKS clusters
|
|
523
|
+
ic aws eks nodes -a prod-account # Inspect EKS node groups
|
|
524
|
+
ic aws eks pods -a prod-account # Inspect EKS pods across namespaces
|
|
525
|
+
ic aws ecs info # List ECS clusters, services, and tasks
|
|
526
|
+
|
|
527
|
+
# --- Storage, Databases & Networking ---
|
|
528
|
+
ic aws ebs info -a prod-account # Inspect EBS volumes, IOPS, throughput, and attachments
|
|
529
|
+
ic aws s3 info # List S3 buckets
|
|
530
|
+
ic aws s3 tag_check # Audit S3 buckets for required compliance tags
|
|
531
|
+
ic aws rds info # Inspect RDS instances and Aurora clusters
|
|
532
|
+
|
|
533
|
+
ic aws sg info -a prod-account # Inspect Security Group ingress/egress rules
|
|
534
|
+
ic aws sg info -a prod-account -o tree # Render Security Group rules as a visual hierarchy tree
|
|
535
|
+
ic aws lb info -a prod-account # Inspect ALB/NLB listeners, rules, and target health
|
|
536
|
+
ic aws vpc info -a prod-account # Inspect VPCs, Subnets, and NAT Gateways
|
|
537
|
+
ic aws cloudfront info # Inspect CloudFront CDN distributions
|
|
538
|
+
```
|
|
539
|
+
|
|
540
|
+
---
|
|
541
|
+
|
|
542
|
+
### 2. Tencent Cloud Command Examples
|
|
543
|
+
|
|
544
|
+
```bash
|
|
545
|
+
# --- Authentication & Profile Management ---
|
|
546
|
+
ic tencent profile info # View configured accounts and AssumeRole mapping
|
|
547
|
+
ic tencent profile switch # Check active auth mode (tccli vs service)
|
|
548
|
+
ic tencent profile switch tccli # Switch to personal 'tccli auth login' STS session
|
|
549
|
+
ic tencent profile switch service # Switch to service account credentials
|
|
550
|
+
|
|
551
|
+
# --- CAM Security Audit & Permission Governance ---
|
|
552
|
+
# 1) Credential & Password Hygiene Audit (check)
|
|
553
|
+
ic tencent cam check # Audit sub-accounts & collaborators password/key age
|
|
554
|
+
ic tencent cam check -w # Filter users with 90+ day password/key warnings
|
|
555
|
+
ic tencent cam check -t collaborator # Filter external collaborators only
|
|
556
|
+
|
|
557
|
+
# 2) User Permission, Resource & Condition Inspection (user)
|
|
558
|
+
ic tencent cam user # Inspect users, groups, Direct/Group policies, conditions, roles
|
|
559
|
+
ic tencent cam user -a prod-account -n devops,operator # Filter by account and user name
|
|
560
|
+
ic tencent cam user --policy CVMFullAccess --resource vpc # Filter by attached policy or scoped resource
|
|
561
|
+
ic tencent cam user --condition 203.0.113.10 -o tree # Filter by IP condition and render as a tree
|
|
562
|
+
|
|
563
|
+
# 3) CAM Policy Inspection (policy)
|
|
564
|
+
ic tencent cam policy # List custom CAM policies and attached entities
|
|
565
|
+
ic tencent cam policy -t all --attached # Include attached Tencent QCS preset policies
|
|
566
|
+
ic tencent cam policy --unattached # Find unattached custom policies
|
|
567
|
+
ic tencent cam policy -n CustomVpcPolicy -d # Display full CAM policy document statements (-d)
|
|
568
|
+
|
|
569
|
+
# 4) CAM Role Inspection (role)
|
|
570
|
+
ic tencent cam role # List CAM roles, trusted principals, and attached policies
|
|
571
|
+
ic tencent cam role -t user --no-slr # Filter user/cross-account roles excluding service-linked roles
|
|
572
|
+
ic tencent cam role --trust cvm,tke --policy FullAccess # Filter by trusted principal and attached policy
|
|
573
|
+
ic tencent cam role -o tree # Render role trust and policy hierarchy as a tree
|
|
574
|
+
|
|
575
|
+
# --- CVM, Lighthouse & Containers ---
|
|
576
|
+
ic tencent cvm info # List CVM instances across accounts and regions
|
|
577
|
+
ic tencent cvm info -a prod-account -n "api,batch" # Multi-pattern instance name search
|
|
578
|
+
ic tencent cvm info -c ">=2026-01-01" # Filter instances created on or after 2026-01-01
|
|
579
|
+
ic tencent cvm info -p # Spreadsheet copy-paste CSV output
|
|
580
|
+
ic tencent cvm desc -l # Discover CVM schema keys
|
|
581
|
+
ic tencent cvm desc -k InstanceId,InstanceState,PrivateIpAddresses.0
|
|
582
|
+
|
|
583
|
+
ic tencent lighthouse info # List Lighthouse lightweight servers
|
|
584
|
+
ic tencent lighthouse info -p # Spreadsheet copy-paste CSV output
|
|
585
|
+
ic tencent lighthouse firewall # Inspect Lighthouse instance firewall rules
|
|
586
|
+
ic tencent lighthouse firewall -o tree # Render Lighthouse firewall rules in tree view
|
|
587
|
+
ic tencent lighthouse firewall --port 22 --action ACCEPT # Filter firewall rules by port and action
|
|
588
|
+
|
|
589
|
+
ic tencent tke info # Inspect TKE Kubernetes clusters and nodes
|
|
590
|
+
ic tencent cbs info # Inspect Cloud Block Storage (CBS) volumes
|
|
591
|
+
|
|
592
|
+
# --- Networking & Cloud Load Balancer (CLB) ---
|
|
593
|
+
ic tencent clb info # Inspect CLBs, listeners, domain rules, and target health
|
|
594
|
+
ic tencent clb traffic # Query 7-day CLB bandwidth (Avg/Max Mbps) and total traffic
|
|
595
|
+
ic tencent clb traffic -d 30 # Query 30-day CLB bandwidth and traffic statistics
|
|
596
|
+
ic tencent sg info -o tree # Render Security Group ingress/egress rules in tree view
|
|
597
|
+
ic tencent vpc info # Inspect VPCs and Subnets
|
|
598
|
+
ic tencent nat info # Inspect NAT Gateways
|
|
599
|
+
```
|
|
600
|
+
|
|
601
|
+
---
|
|
602
|
+
|
|
603
|
+
### 3. GCP Command Examples
|
|
604
|
+
|
|
605
|
+
```bash
|
|
606
|
+
# Compute Engine VM instances
|
|
607
|
+
ic gcp compute info # Standard VM inventory across projects/zones
|
|
608
|
+
ic gcp compute info -a sample-project-01 -v # Verbose 15-column output
|
|
609
|
+
ic gcp compute desc -l # List queryable VM schema keys
|
|
610
|
+
ic gcp compute desc -k status,machine_type,internal_ip # Extract specific VM attributes
|
|
611
|
+
|
|
612
|
+
# Load Balancing (ALB / NLB)
|
|
613
|
+
ic gcp lb info # Inspect forwarding rules, proxies, and backend services
|
|
614
|
+
ic gcp lb desc -l # List queryable LB schema keys
|
|
615
|
+
ic gcp lb desc -k type,ip_address,backend_services.0.name # Extract specific LB attributes
|
|
616
|
+
|
|
617
|
+
# Containers, Serverless, Databases & Networking
|
|
618
|
+
ic gcp gke info # GKE clusters and node pools
|
|
619
|
+
ic gcp run info # Cloud Run services and revisions
|
|
620
|
+
ic gcp functions info # Cloud Functions inventory
|
|
621
|
+
ic gcp sql info # Cloud SQL instances
|
|
622
|
+
ic gcp storage info # Cloud Storage buckets
|
|
623
|
+
ic gcp vpc info # VPC networks and subnets
|
|
624
|
+
ic gcp firewall info # VPC firewall ingress/egress rules
|
|
625
|
+
ic gcp dns info # Cloud DNS managed zones
|
|
626
|
+
ic gcp project info # Folder and project hierarchy tree
|
|
627
|
+
ic gcp billing info # Monthly billing breakdown by service
|
|
628
|
+
```
|
|
629
|
+
|
|
630
|
+
---
|
|
631
|
+
|
|
632
|
+
### 4. OCI, CloudFlare, SSH & Security Command Examples
|
|
633
|
+
|
|
634
|
+
```bash
|
|
635
|
+
# Oracle Cloud Infrastructure (OCI)
|
|
636
|
+
ic oci vm info # Compute VM instances
|
|
637
|
+
ic oci aci info # Autonomous Container Instances
|
|
638
|
+
ic oci vcn info # Virtual Cloud Networks and Subnets
|
|
639
|
+
ic oci lb info # Load Balancers
|
|
640
|
+
ic oci nsg info # Network Security Groups
|
|
641
|
+
ic oci volume info # Block Volumes
|
|
642
|
+
ic oci obj info # Object Storage buckets
|
|
643
|
+
ic oci compartment # Compartment hierarchy tree
|
|
644
|
+
ic oci policy info # IAM Policies
|
|
645
|
+
ic oci cost usage # Cost and billing usage report
|
|
646
|
+
|
|
647
|
+
# CloudFlare (supports both 'ic cf' and 'ic cloudflare')
|
|
648
|
+
ic cf zone info # List CloudFlare zones
|
|
649
|
+
ic cf dns info # Inspect DNS records across zones
|
|
650
|
+
|
|
651
|
+
# SSH Server Management
|
|
652
|
+
ic ssh info # Auto-discover and verify SSH servers from ~/.ssh/config
|
|
653
|
+
|
|
654
|
+
# Built-in Security Scanner & Git Hooks
|
|
655
|
+
ic security scan # Scan workspace for hardcoded secrets or private keys
|
|
656
|
+
ic security install-hooks # Install pre-commit secret scanning hooks
|
|
657
|
+
```
|
|
658
|
+
|
|
659
|
+
---
|
|
660
|
+
|
|
661
|
+
## Testing & Verification
|
|
662
|
+
|
|
663
|
+
The test suite is organized into Core Unit Tests (`tests/unit/`) and Platform Test Suites (`tests/platforms/<platform>/`) with automatic CI platform discovery:
|
|
664
|
+
|
|
665
|
+
```bash
|
|
666
|
+
# Run the full test suite (Core + All Platforms)
|
|
667
|
+
PYTHONPATH=src:. pytest -q
|
|
668
|
+
|
|
669
|
+
# Run Core Unit Tests only
|
|
670
|
+
PYTHONPATH=src:. pytest tests/unit
|
|
671
|
+
|
|
672
|
+
# Run tests for a specific cloud platform
|
|
673
|
+
PYTHONPATH=src:. pytest tests/platforms/aws
|
|
674
|
+
PYTHONPATH=src:. pytest tests/platforms/tencent
|
|
675
|
+
PYTHONPATH=src:. pytest tests/platforms/gcp
|
|
676
|
+
PYTHONPATH=src:. pytest tests/platforms/oci
|
|
677
|
+
PYTHONPATH=src:. pytest tests/platforms/cloudflare
|
|
678
|
+
PYTHONPATH=src:. pytest tests/platforms/ssh
|
|
679
|
+
|
|
680
|
+
# Build wheel and run isolated clean-virtualenv smoke test
|
|
681
|
+
bash scripts/ci-smoke-test.sh
|
|
682
|
+
```
|
|
683
|
+
|
|
684
|
+
---
|
|
685
|
+
|
|
686
|
+
## License
|
|
687
|
+
|
|
688
|
+
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
|