bt-cli 0.4.12__tar.gz → 0.4.14__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.
- {bt_cli-0.4.12 → bt_cli-0.4.14}/PKG-INFO +1 -1
- {bt_cli-0.4.12 → bt_cli-0.4.14}/pyproject.toml +1 -1
- bt_cli-0.4.14/scripts/sync-package-data.sh +21 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/__init__.py +1 -1
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/data/CLAUDE.md +17 -11
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/data/skills/bt/SKILL.md +36 -26
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/data/skills/entitle/SKILL.md +25 -14
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/data/skills/epmw/SKILL.md +15 -16
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/data/skills/pra/SKILL.md +40 -39
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/data/skills/pws/SKILL.md +22 -21
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/epmw/commands/policies.py +17 -3
- bt_cli-0.4.14/src/bt_cli/pws/commands/import_export.py +627 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/pws/commands/secrets.py +5 -5
- bt_cli-0.4.12/src/bt_cli/pws/commands/import_export.py +0 -452
- {bt_cli-0.4.12 → bt_cli-0.4.14}/.claude/skills/bt/SKILL.md +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/.claude/skills/entitle/SKILL.md +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/.claude/skills/epmw/SKILL.md +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/.claude/skills/pra/SKILL.md +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/.claude/skills/pws/SKILL.md +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/.env.example +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/.github/workflows/ci.yml +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/.github/workflows/release.yml +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/.gitignore +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/CLAUDE.md +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/README.md +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/assets/cli-help.png +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/assets/cli-output.png +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/bt-cli.spec +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/bt_entry.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/scripts/bt_entry.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/cli.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/commands/__init__.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/commands/configure.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/commands/learn.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/commands/quick.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/core/__init__.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/core/auth.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/core/client.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/core/config.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/core/config_file.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/core/csv_utils.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/core/errors.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/core/output.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/core/prompts.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/core/rest_debug.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/data/__init__.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/entitle/__init__.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/entitle/client/__init__.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/entitle/client/base.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/entitle/commands/__init__.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/entitle/commands/accounts.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/entitle/commands/applications.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/entitle/commands/auth.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/entitle/commands/bundles.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/entitle/commands/integrations.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/entitle/commands/permissions.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/entitle/commands/policies.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/entitle/commands/resources.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/entitle/commands/roles.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/entitle/commands/users.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/entitle/commands/workflows.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/entitle/models/__init__.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/entitle/models/bundle.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/entitle/models/common.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/entitle/models/integration.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/entitle/models/permission.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/entitle/models/policy.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/entitle/models/resource.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/entitle/models/role.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/entitle/models/user.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/entitle/models/workflow.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/epmw/__init__.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/epmw/client/__init__.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/epmw/client/base.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/epmw/commands/__init__.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/epmw/commands/audits.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/epmw/commands/auth.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/epmw/commands/computers.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/epmw/commands/events.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/epmw/commands/groups.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/epmw/commands/quick.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/epmw/commands/requests.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/epmw/commands/roles.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/epmw/commands/tasks.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/epmw/commands/users.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/epmw/models/__init__.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/pra/__init__.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/pra/client/__init__.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/pra/client/base.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/pra/commands/__init__.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/pra/commands/auth.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/pra/commands/import_export.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/pra/commands/jump_clients.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/pra/commands/jump_groups.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/pra/commands/jump_items.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/pra/commands/jumpoints.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/pra/commands/policies.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/pra/commands/quick.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/pra/commands/teams.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/pra/commands/users.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/pra/commands/vault.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/pra/models/__init__.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/pra/models/common.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/pra/models/jump_client.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/pra/models/jump_group.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/pra/models/jump_item.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/pra/models/jumpoint.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/pra/models/team.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/pra/models/user.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/pra/models/vault.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/pws/__init__.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/pws/client/__init__.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/pws/client/base.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/pws/client/beyondinsight.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/pws/client/passwordsafe.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/pws/commands/__init__.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/pws/commands/accounts.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/pws/commands/assets.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/pws/commands/auth.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/pws/commands/clouds.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/pws/commands/config.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/pws/commands/credentials.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/pws/commands/databases.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/pws/commands/directories.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/pws/commands/functional.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/pws/commands/platforms.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/pws/commands/quick.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/pws/commands/search.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/pws/commands/systems.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/pws/commands/users.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/pws/commands/workgroups.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/pws/config.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/pws/models/__init__.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/pws/models/account.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/pws/models/asset.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/pws/models/common.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/src/bt_cli/pws/models/system.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/tests/__init__.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/tests/conftest.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/tests/core/__init__.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/tests/core/test_auth.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/tests/core/test_config.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/tests/core/test_errors.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/tests/core/test_rest_debug.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/tests/entitle/__init__.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/tests/entitle/test_client.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/tests/entitle/test_commands.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/tests/entitle-smoke-test.sh +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/tests/epmw/__init__.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/tests/epmw/test_client.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/tests/epmw/test_commands.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/tests/epmw-quick-test-plan.md +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/tests/fixtures/__init__.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/tests/fixtures/responses.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/tests/integration/__init__.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/tests/integration/conftest.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/tests/integration/helpers.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/tests/integration/test_entitle_integration.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/tests/integration/test_epmw_integration.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/tests/integration/test_epmw_lifecycle.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/tests/integration/test_pra_integration.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/tests/integration/test_pra_lifecycle.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/tests/integration/test_pws_integration.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/tests/integration/test_pws_lifecycle.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/tests/pra/__init__.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/tests/pra/test_client.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/tests/pra/test_commands.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/tests/pra-smoke-test.sh +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/tests/pra-test-plan.md +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/tests/pws/__init__.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/tests/pws/test_client.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/tests/pws/test_commands.py +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/tests/pws-quick-test-plan.md +0 -0
- {bt_cli-0.4.12 → bt_cli-0.4.14}/tests/pws-smoke-test.sh +0 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Sync skills and CLAUDE.md to package data directory before building
|
|
3
|
+
# Run this before `python -m build` to ensure package has latest content
|
|
4
|
+
|
|
5
|
+
set -e
|
|
6
|
+
|
|
7
|
+
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
8
|
+
PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
|
|
9
|
+
|
|
10
|
+
echo "Syncing package data..."
|
|
11
|
+
|
|
12
|
+
# Sync skills
|
|
13
|
+
rm -rf "$PROJECT_ROOT/src/bt_cli/data/skills"
|
|
14
|
+
cp -r "$PROJECT_ROOT/.claude/skills" "$PROJECT_ROOT/src/bt_cli/data/skills"
|
|
15
|
+
echo " ✓ Synced .claude/skills -> src/bt_cli/data/skills"
|
|
16
|
+
|
|
17
|
+
# Sync CLAUDE.md
|
|
18
|
+
cp "$PROJECT_ROOT/CLAUDE.md" "$PROJECT_ROOT/src/bt_cli/data/CLAUDE.md"
|
|
19
|
+
echo " ✓ Synced CLAUDE.md -> src/bt_cli/data/CLAUDE.md"
|
|
20
|
+
|
|
21
|
+
echo "Done. Ready to build."
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
# BT-
|
|
1
|
+
# BT-CLI
|
|
2
2
|
|
|
3
3
|
BeyondTrust Platform CLI for Password Safe, Entitle, PRA, and EPM Windows.
|
|
4
4
|
|
|
5
5
|
## Setup
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
|
-
|
|
8
|
+
# From project root
|
|
9
9
|
source .venv/bin/activate && source .env
|
|
10
10
|
bt whoami # Test all connections
|
|
11
11
|
```
|
|
@@ -62,16 +62,22 @@ PASSWORD=$(bt pws quick checkout -s server -a admin --raw)
|
|
|
62
62
|
- PWS assets: Must create via workgroup endpoint
|
|
63
63
|
- ECM integration: PWS system name must match PRA jump item name
|
|
64
64
|
|
|
65
|
-
##
|
|
65
|
+
## Functional vs Managed Accounts
|
|
66
66
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
67
|
+
**Functional accounts** (`bt pws functional`) - Service accounts used BY Password Safe to connect to systems for auto-management (password rotation, discovery). One functional account can manage many systems.
|
|
68
|
+
|
|
69
|
+
**Managed accounts** (`bt pws accounts`) - User accounts ON systems that Password Safe manages (stores/rotates passwords for). These are what users check out.
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
# List functional accounts to find the right one for your platform
|
|
73
|
+
bt pws functional list
|
|
74
|
+
|
|
75
|
+
# List workgroups to find the right one
|
|
76
|
+
bt pws workgroups list
|
|
77
|
+
|
|
78
|
+
# Use functional account when onboarding a system
|
|
79
|
+
bt pws quick onboard -n "server" -i "10.0.1.50" -w <WORKGROUP_ID> -f <FUNC_ACCT_ID> -e "sudo"
|
|
80
|
+
```
|
|
75
81
|
|
|
76
82
|
## Project Structure
|
|
77
83
|
|
|
@@ -22,9 +22,10 @@ Before executing any destructive operation:
|
|
|
22
22
|
|
|
23
23
|
## Setup
|
|
24
24
|
|
|
25
|
+
The CLI should be installed and configured. Test with:
|
|
26
|
+
|
|
25
27
|
```bash
|
|
26
|
-
|
|
27
|
-
source .venv/bin/activate && source .env
|
|
28
|
+
bt whoami # Verify all products are connected
|
|
28
29
|
```
|
|
29
30
|
|
|
30
31
|
## Test All Connections
|
|
@@ -47,27 +48,32 @@ bt quick pasm-search web-server -o json
|
|
|
47
48
|
### PASM Onboard (PWS + PRA)
|
|
48
49
|
Onboard a host to both Password Safe and PRA in one command.
|
|
49
50
|
|
|
51
|
+
**First, discover your environment IDs** (see "Discover Environment IDs" below).
|
|
52
|
+
|
|
50
53
|
```bash
|
|
51
|
-
# Linux SSH host
|
|
52
|
-
bt quick pasm-onboard -n "my-server" -i "10.0.1.50"
|
|
54
|
+
# Linux SSH host (use IDs from your environment)
|
|
55
|
+
bt quick pasm-onboard -n "my-server" -i "10.0.1.50" \
|
|
56
|
+
-w <workgroup_id> -j <jumpoint_id> -g <jump_group_id>
|
|
53
57
|
|
|
54
58
|
# Full options
|
|
55
59
|
bt quick pasm-onboard \
|
|
56
60
|
--name "web-01" \
|
|
57
61
|
--ip "10.0.1.100" \
|
|
58
|
-
--workgroup
|
|
59
|
-
--jumpoint
|
|
60
|
-
--jump-group
|
|
61
|
-
--functional-account
|
|
62
|
+
--workgroup <workgroup_id> \
|
|
63
|
+
--jumpoint <jumpoint_id> \
|
|
64
|
+
--jump-group <jump_group_id> \
|
|
65
|
+
--functional-account <func_acct_id> \
|
|
62
66
|
--elevation "sudo" \
|
|
63
|
-
--pra-username "
|
|
67
|
+
--pra-username "admin"
|
|
64
68
|
|
|
65
69
|
# Windows RDP host
|
|
66
|
-
bt quick pasm-onboard -n "win-srv" -i "10.0.2.10"
|
|
70
|
+
bt quick pasm-onboard -n "win-srv" -i "10.0.2.10" \
|
|
71
|
+
-w <workgroup_id> -p <platform_id> -j <jumpoint_id> -g <jump_group_id> \
|
|
72
|
+
--jump-type rdp --port 3389
|
|
67
73
|
|
|
68
74
|
# Skip one product
|
|
69
|
-
bt quick pasm-onboard -n "pra-only" -i "10.0.1.5" -j
|
|
70
|
-
bt quick pasm-onboard -n "pws-only" -i "10.0.1.6" -w
|
|
75
|
+
bt quick pasm-onboard -n "pra-only" -i "10.0.1.5" -j <jumpoint_id> -g <jump_group_id> --skip-pws
|
|
76
|
+
bt quick pasm-onboard -n "pws-only" -i "10.0.1.6" -w <workgroup_id> --skip-pra
|
|
71
77
|
```
|
|
72
78
|
|
|
73
79
|
### PASM Offboard
|
|
@@ -78,20 +84,24 @@ bt quick pasm-offboard -n "my-server"
|
|
|
78
84
|
bt quick pasm-offboard -n "web-01" --force
|
|
79
85
|
```
|
|
80
86
|
|
|
81
|
-
## Environment
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
87
|
+
## Discover Environment IDs
|
|
88
|
+
|
|
89
|
+
Use these commands to find the IDs for your environment:
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
# PWS resources
|
|
93
|
+
bt pws workgroups list # Find workgroup IDs
|
|
94
|
+
bt pws functional list # Find functional account IDs
|
|
95
|
+
bt pws platforms list # Find platform IDs
|
|
96
|
+
|
|
97
|
+
# PRA resources
|
|
98
|
+
bt pra jumpoint list # Find jumpoint IDs
|
|
99
|
+
bt pra jump-groups list # Find jump group IDs
|
|
100
|
+
bt pra vault groups list # Find vault account group IDs
|
|
101
|
+
|
|
102
|
+
# Entitle resources
|
|
103
|
+
bt entitle integrations list # Find integration IDs
|
|
104
|
+
```
|
|
95
105
|
|
|
96
106
|
## Product-Specific Skills
|
|
97
107
|
|
|
@@ -25,10 +25,10 @@ bt entitle integrations get <integration_id>
|
|
|
25
25
|
bt entitle resources list --integration <integration_id>
|
|
26
26
|
bt entitle resources get <resource_id>
|
|
27
27
|
|
|
28
|
-
# Virtual integration resources
|
|
28
|
+
# Virtual integration resources (use integration ID from `bt entitle integrations list`)
|
|
29
29
|
bt entitle resources create-virtual \
|
|
30
30
|
--name "Customer-05 (Bing7)" \
|
|
31
|
-
--integration
|
|
31
|
+
--integration <virtual_integration_id> \
|
|
32
32
|
--source-role-id <role_id> \
|
|
33
33
|
--role-name "Start Session"
|
|
34
34
|
bt entitle resources delete <resource_id>
|
|
@@ -101,18 +101,21 @@ bt entitle policies get <policy_id>
|
|
|
101
101
|
- Or manually trigger sync in Entitle UI: Integrations → PRA → Sync Now
|
|
102
102
|
|
|
103
103
|
```bash
|
|
104
|
-
# 1.
|
|
104
|
+
# 1. Find your PRA integration ID
|
|
105
|
+
bt entitle integrations list | grep -i pra
|
|
105
106
|
|
|
106
|
-
# 2.
|
|
107
|
-
bt entitle resources list --integration bb2a3c79-02a9-45d9-be7f-f209d97cb1d7
|
|
107
|
+
# 2. Trigger PRA sync in Entitle UI (or wait for hourly sync)
|
|
108
108
|
|
|
109
|
-
# 3.
|
|
109
|
+
# 3. Find the new PRA resource
|
|
110
|
+
bt entitle resources list --integration <pra_integration_id>
|
|
111
|
+
|
|
112
|
+
# 4. Get "Start Sessions Only" role ID
|
|
110
113
|
bt entitle roles list --resource <pra_resource_id>
|
|
111
114
|
|
|
112
|
-
#
|
|
115
|
+
# 5. Add to virtual integration (find ID with `bt entitle integrations list`)
|
|
113
116
|
bt entitle resources create-virtual \
|
|
114
117
|
--name "Customer-05" \
|
|
115
|
-
--integration
|
|
118
|
+
--integration <virtual_integration_id> \
|
|
116
119
|
--source-role-id <role_id> \
|
|
117
120
|
--role-name "Start Session"
|
|
118
121
|
```
|
|
@@ -123,13 +126,21 @@ bt entitle resources create-virtual \
|
|
|
123
126
|
bt entitle permissions list --user "user@example.com" -o json
|
|
124
127
|
```
|
|
125
128
|
|
|
126
|
-
##
|
|
129
|
+
## Discover IDs
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
# Find integration IDs
|
|
133
|
+
bt entitle integrations list
|
|
134
|
+
|
|
135
|
+
# Find workflow IDs
|
|
136
|
+
bt entitle workflows list
|
|
137
|
+
|
|
138
|
+
# Find resource IDs within an integration
|
|
139
|
+
bt entitle resources list --integration <integration_id>
|
|
127
140
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
| Customer Access (Virtual) | 22f4960f-b2ee-435f-9fa2-b82baeca06b2 |
|
|
132
|
-
| AWS SandBox | (check `bt entitle integrations list`) |
|
|
141
|
+
# Find role IDs for a resource
|
|
142
|
+
bt entitle roles list --resource <resource_id>
|
|
143
|
+
```
|
|
133
144
|
|
|
134
145
|
## Integrations Available
|
|
135
146
|
|
|
@@ -118,22 +118,21 @@ bt epmw audits requests list
|
|
|
118
118
|
bt epmw audits requests get <audit_id>
|
|
119
119
|
```
|
|
120
120
|
|
|
121
|
-
##
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
| CorpWS02 | nexusdyn.corp | Workstations | Connected |
|
|
121
|
+
## Discover IDs
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
# Find group IDs
|
|
125
|
+
bt epmw groups list
|
|
126
|
+
|
|
127
|
+
# Find computer IDs
|
|
128
|
+
bt epmw computers list
|
|
129
|
+
|
|
130
|
+
# Find policy IDs
|
|
131
|
+
bt epmw policies list
|
|
132
|
+
|
|
133
|
+
# Find user IDs
|
|
134
|
+
bt epmw users list
|
|
135
|
+
```
|
|
137
136
|
|
|
138
137
|
## API Notes
|
|
139
138
|
|
|
@@ -35,28 +35,28 @@ bt pra quick search admin -o json
|
|
|
35
35
|
|
|
36
36
|
```bash
|
|
37
37
|
bt pra jump-items shell list
|
|
38
|
-
bt pra jump-items shell get
|
|
38
|
+
bt pra jump-items shell get <jump_item_id>
|
|
39
39
|
bt pra jump-items shell create \
|
|
40
40
|
--name "web-server-01" \
|
|
41
41
|
--hostname "10.0.1.50" \
|
|
42
|
-
--jumpoint
|
|
43
|
-
--jump-group
|
|
42
|
+
--jumpoint <jumpoint_id> \
|
|
43
|
+
--jump-group <jump_group_id> \
|
|
44
44
|
--protocol ssh \
|
|
45
45
|
--port 22 \
|
|
46
|
-
--username "
|
|
47
|
-
bt pra jump-items shell delete
|
|
46
|
+
--username "admin"
|
|
47
|
+
bt pra jump-items shell delete <jump_item_id>
|
|
48
48
|
```
|
|
49
49
|
|
|
50
50
|
### RDP Jump
|
|
51
51
|
|
|
52
52
|
```bash
|
|
53
53
|
bt pra jump-items rdp list
|
|
54
|
-
bt pra jump-items rdp get
|
|
54
|
+
bt pra jump-items rdp get <jump_item_id>
|
|
55
55
|
bt pra jump-items rdp create \
|
|
56
56
|
--name "win-server-01" \
|
|
57
57
|
--hostname "10.0.2.10" \
|
|
58
|
-
--jumpoint
|
|
59
|
-
--jump-group
|
|
58
|
+
--jumpoint <jumpoint_id> \
|
|
59
|
+
--jump-group <jump_group_id> \
|
|
60
60
|
--port 3389
|
|
61
61
|
```
|
|
62
62
|
|
|
@@ -67,8 +67,8 @@ bt pra jump-items tunnel list
|
|
|
67
67
|
bt pra jump-items tunnel create \
|
|
68
68
|
--name "production-k8s" \
|
|
69
69
|
--hostname "k8s-api.example.com" \
|
|
70
|
-
--jumpoint
|
|
71
|
-
--jump-group
|
|
70
|
+
--jumpoint <jumpoint_id> \
|
|
71
|
+
--jump-group <jump_group_id> \
|
|
72
72
|
--type k8s \
|
|
73
73
|
--url "https://k8s-api.example.com:6443" \
|
|
74
74
|
--ca-cert "$(cat /path/to/ca.crt)"
|
|
@@ -78,25 +78,25 @@ bt pra jump-items tunnel create \
|
|
|
78
78
|
|
|
79
79
|
```bash
|
|
80
80
|
bt pra jump-groups list
|
|
81
|
-
bt pra jump-groups get
|
|
81
|
+
bt pra jump-groups get <group_id>
|
|
82
82
|
bt pra jump-groups create \
|
|
83
|
-
--name "Customer-05
|
|
84
|
-
--code-name
|
|
85
|
-
--comments "
|
|
86
|
-
bt pra jump-groups delete
|
|
83
|
+
--name "Customer-05" \
|
|
84
|
+
--code-name customer05 \
|
|
85
|
+
--comments "New customer environment"
|
|
86
|
+
bt pra jump-groups delete <group_id>
|
|
87
87
|
```
|
|
88
88
|
|
|
89
89
|
## Vault Accounts
|
|
90
90
|
|
|
91
91
|
```bash
|
|
92
92
|
bt pra vault accounts list
|
|
93
|
-
bt pra vault accounts get
|
|
94
|
-
bt pra vault accounts checkout
|
|
95
|
-
bt pra vault accounts checkin
|
|
96
|
-
bt pra vault accounts rotate
|
|
93
|
+
bt pra vault accounts get <account_id>
|
|
94
|
+
bt pra vault accounts checkout <account_id>
|
|
95
|
+
bt pra vault accounts checkin <account_id>
|
|
96
|
+
bt pra vault accounts rotate <account_id>
|
|
97
97
|
|
|
98
98
|
# SSH CA - get public key for provisioning
|
|
99
|
-
bt pra vault accounts get-public-key
|
|
99
|
+
bt pra vault accounts get-public-key <ssh_ca_account_id>
|
|
100
100
|
```
|
|
101
101
|
|
|
102
102
|
## SSH CA Authentication
|
|
@@ -104,21 +104,18 @@ bt pra vault accounts get-public-key 31
|
|
|
104
104
|
PRA supports SSH CA for ephemeral access - no static keys on hosts.
|
|
105
105
|
|
|
106
106
|
```bash
|
|
107
|
+
# Find SSH CA vault accounts
|
|
108
|
+
bt pra vault accounts list | grep -i ssh
|
|
109
|
+
|
|
107
110
|
# Get CA public key (ready for authorized_keys)
|
|
108
|
-
bt pra vault accounts get-public-key
|
|
111
|
+
bt pra vault accounts get-public-key <ssh_ca_account_id>
|
|
109
112
|
# Output: cert-authority ssh-rsa AAAAB3NzaC1yc2E...
|
|
110
113
|
|
|
111
114
|
# Provision EC2 with SSH CA
|
|
112
|
-
PRA_CA_KEY=$(bt pra vault accounts get-public-key
|
|
115
|
+
PRA_CA_KEY=$(bt pra vault accounts get-public-key <ssh_ca_account_id>)
|
|
113
116
|
# Embed in user-data script for EC2
|
|
114
117
|
```
|
|
115
118
|
|
|
116
|
-
**SSH CA Vault Accounts:**
|
|
117
|
-
| ID | Name | Username |
|
|
118
|
-
|----|------|----------|
|
|
119
|
-
| 3 | Ephemeral Admin SSH CA | admin-ephemeral |
|
|
120
|
-
| 31 | ec2-admin | ec2-admin |
|
|
121
|
-
|
|
122
119
|
## CSV Import/Export
|
|
123
120
|
|
|
124
121
|
```bash
|
|
@@ -128,17 +125,21 @@ bt pra import jump-items --file jump-items.csv --dry-run
|
|
|
128
125
|
bt pra import jump-items --file jump-items.csv
|
|
129
126
|
```
|
|
130
127
|
|
|
131
|
-
##
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
128
|
+
## Discover IDs
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
# Find jumpoint IDs
|
|
132
|
+
bt pra jumpoint list
|
|
133
|
+
|
|
134
|
+
# Find jump group IDs
|
|
135
|
+
bt pra jump-groups list
|
|
136
|
+
|
|
137
|
+
# Find vault account IDs
|
|
138
|
+
bt pra vault accounts list
|
|
139
|
+
|
|
140
|
+
# Find vault account group IDs
|
|
141
|
+
bt pra vault groups list
|
|
142
|
+
```
|
|
142
143
|
|
|
143
144
|
## API Notes
|
|
144
145
|
|
|
@@ -39,8 +39,9 @@ bt pws quick search root -o json
|
|
|
39
39
|
bt pws quick rotate -s "axion-finapp-01" -a "root"
|
|
40
40
|
|
|
41
41
|
# Onboard system (asset + system + account)
|
|
42
|
-
|
|
43
|
-
bt pws quick onboard -n "
|
|
42
|
+
# First find your workgroup and functional account IDs (see "Discover IDs" below)
|
|
43
|
+
bt pws quick onboard -n "my-server" -i "10.0.1.50" -w <workgroup_id>
|
|
44
|
+
bt pws quick onboard -n "web-01" -i "10.0.1.100" -w <workgroup_id> -f <func_acct_id> -e "sudo"
|
|
44
45
|
|
|
45
46
|
# Offboard system
|
|
46
47
|
bt pws quick offboard -s "my-server"
|
|
@@ -52,15 +53,15 @@ bt pws quick offboard -s "web-01" --force
|
|
|
52
53
|
```bash
|
|
53
54
|
# List systems
|
|
54
55
|
bt pws systems list
|
|
55
|
-
bt pws systems list --workgroup
|
|
56
|
+
bt pws systems list --workgroup <workgroup_id>
|
|
56
57
|
bt pws systems list -o json
|
|
57
58
|
|
|
58
59
|
# Get system details
|
|
59
|
-
bt pws systems get
|
|
60
|
+
bt pws systems get <system_id>
|
|
60
61
|
|
|
61
62
|
# List accounts on a system
|
|
62
|
-
bt pws accounts list --system
|
|
63
|
-
bt pws accounts get
|
|
63
|
+
bt pws accounts list --system <system_id>
|
|
64
|
+
bt pws accounts get <account_id>
|
|
64
65
|
```
|
|
65
66
|
|
|
66
67
|
## Secrets Safe
|
|
@@ -128,13 +129,13 @@ bt pws quick user-entitlements dave
|
|
|
128
129
|
|
|
129
130
|
```bash
|
|
130
131
|
# 1. Find system
|
|
131
|
-
bt pws systems list -o json | jq '.[] | select(.SystemName=="
|
|
132
|
+
bt pws systems list -o json | jq '.[] | select(.SystemName=="my-server")'
|
|
132
133
|
|
|
133
134
|
# 2. Find account
|
|
134
|
-
bt pws accounts list --system
|
|
135
|
+
bt pws accounts list --system <system_id>
|
|
135
136
|
|
|
136
137
|
# 3. Checkout
|
|
137
|
-
bt pws credentials checkout --system "
|
|
138
|
+
bt pws credentials checkout --system "my-server" --account "root"
|
|
138
139
|
|
|
139
140
|
# 4. Get password
|
|
140
141
|
bt pws credentials show <request_id>
|
|
@@ -158,18 +159,18 @@ bt pws import systems --file systems.csv
|
|
|
158
159
|
bt pws import secrets --file secrets.csv
|
|
159
160
|
```
|
|
160
161
|
|
|
161
|
-
##
|
|
162
|
+
## Discover IDs
|
|
162
163
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
164
|
+
```bash
|
|
165
|
+
# Find workgroup IDs
|
|
166
|
+
bt pws workgroups list
|
|
167
|
+
|
|
168
|
+
# Find platform IDs
|
|
169
|
+
bt pws platforms list
|
|
170
|
+
|
|
171
|
+
# Find functional account IDs (for auto-management)
|
|
172
|
+
bt pws functional list
|
|
173
|
+
```
|
|
173
174
|
|
|
174
175
|
## EC2 Systems in AWS
|
|
175
176
|
|
|
@@ -179,7 +180,7 @@ When onboarding EC2 instances to Password Safe, use the **internal AWS DNS name*
|
|
|
179
180
|
# Use internal DNS for EC2 systems
|
|
180
181
|
bt pws quick onboard -n "web-prod-01" \
|
|
181
182
|
-i "ip-10-0-12-45.us-east-1.compute.internal" \
|
|
182
|
-
-w
|
|
183
|
+
-w <workgroup_id> -f <func_acct_id>
|
|
183
184
|
|
|
184
185
|
# Or set DNS separately
|
|
185
186
|
bt pws systems update <system_id> --dns "ip-10-0-12-45.us-east-1.compute.internal"
|
|
@@ -288,15 +288,29 @@ def revert_policy(
|
|
|
288
288
|
@app.command("download")
|
|
289
289
|
def download_policy(
|
|
290
290
|
policy_id: str = typer.Argument(..., help="Policy ID (UUID)"),
|
|
291
|
+
file: Optional[str] = typer.Option(None, "--file", "-f", help="Save to file instead of stdout"),
|
|
291
292
|
):
|
|
292
|
-
"""Download policy content (XML format).
|
|
293
|
+
"""Download policy content (XML format).
|
|
294
|
+
|
|
295
|
+
Examples:
|
|
296
|
+
bt epmw policies download <policy_id>
|
|
297
|
+
bt epmw policies download <policy_id> --file policy.xml
|
|
298
|
+
bt epmw policies download <policy_id> > policy.xml
|
|
299
|
+
"""
|
|
293
300
|
from bt_cli.epmw.client import get_client
|
|
294
301
|
|
|
295
302
|
try:
|
|
296
303
|
client = get_client()
|
|
297
304
|
content = client.download_policy(policy_id)
|
|
298
|
-
|
|
299
|
-
|
|
305
|
+
|
|
306
|
+
if file:
|
|
307
|
+
# Write to file
|
|
308
|
+
with open(file, "w", encoding="utf-8") as f:
|
|
309
|
+
f.write(content)
|
|
310
|
+
print_success(f"Policy saved to: {file}")
|
|
311
|
+
else:
|
|
312
|
+
# Output to stdout
|
|
313
|
+
typer.echo(content)
|
|
300
314
|
except httpx.HTTPStatusError as e:
|
|
301
315
|
print_api_error(e, "download policy")
|
|
302
316
|
raise typer.Exit(1)
|