@intentsolutionsio/jeremy-vertex-engine 2.1.0 → 2.1.3
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.
- package/README.md +33 -2
- package/agents/vertex-engine-inspector.md +1 -0
- package/package.json +1 -1
- package/skills/vertex-engine-inspector/SKILL.md +18 -8
- package/skills/vertex-engine-inspector/references/errors.md +1 -0
- package/skills/vertex-engine-inspector/references/example-inspection-report.md +1 -1
- package/skills/vertex-engine-inspector/references/inspection-categories.md +14 -1
- package/skills/vertex-engine-inspector/references/inspection-workflow.md +6 -1
- package/skills/vertex-engine-inspector/scripts/check-security.py +22 -31
package/README.md
CHANGED
|
@@ -7,12 +7,14 @@ Expert inspector and orchestrator for **Vertex AI Agent Engine** - Google Cloud'
|
|
|
7
7
|
## ⚠️ Important: What This Plugin Is For
|
|
8
8
|
|
|
9
9
|
**✅ THIS PLUGIN IS FOR:**
|
|
10
|
+
|
|
10
11
|
- **Vertex AI Agent Engine** deployments (fully-managed runtime)
|
|
11
12
|
- **ADK (Agent Development Kit)** agents deployed to Agent Engine
|
|
12
13
|
- **Reasoning Engine API** resources (`google_vertex_ai_reasoning_engine`)
|
|
13
14
|
- Agent Engine features: Memory Bank, Code Execution Sandbox, Sessions, A2A Protocol
|
|
14
15
|
|
|
15
16
|
**❌ THIS PLUGIN IS NOT FOR:**
|
|
17
|
+
|
|
16
18
|
- Cloud Run deployments (use `jeremy-genkit-terraform` or `jeremy-adk-terraform` with `--cloud-run` flag)
|
|
17
19
|
- LangChain/LlamaIndex on other platforms
|
|
18
20
|
- Self-hosted agent infrastructure
|
|
@@ -33,6 +35,7 @@ This plugin provides comprehensive inspection and validation capabilities for ag
|
|
|
33
35
|
### Required Google Cloud Setup
|
|
34
36
|
|
|
35
37
|
**1. Google Cloud Project with APIs Enabled:**
|
|
38
|
+
|
|
36
39
|
```bash
|
|
37
40
|
# Enable required APIs
|
|
38
41
|
gcloud services enable aiplatform.googleapis.com \
|
|
@@ -44,6 +47,7 @@ gcloud services enable aiplatform.googleapis.com \
|
|
|
44
47
|
```
|
|
45
48
|
|
|
46
49
|
**2. Authentication:**
|
|
50
|
+
|
|
47
51
|
```bash
|
|
48
52
|
# Application Default Credentials
|
|
49
53
|
gcloud auth application-default login
|
|
@@ -53,6 +57,7 @@ export GOOGLE_APPLICATION_CREDENTIALS="/path/to/service-account-key.json"
|
|
|
53
57
|
```
|
|
54
58
|
|
|
55
59
|
**3. Required IAM Permissions:**
|
|
60
|
+
|
|
56
61
|
```yaml
|
|
57
62
|
# Minimum required roles for inspection:
|
|
58
63
|
- roles/aiplatform.user # Query Agent Engine resources
|
|
@@ -65,6 +70,7 @@ export GOOGLE_APPLICATION_CREDENTIALS="/path/to/service-account-key.json"
|
|
|
65
70
|
### Required Python Packages
|
|
66
71
|
|
|
67
72
|
**Install via pip:**
|
|
73
|
+
|
|
68
74
|
```bash
|
|
69
75
|
# Core Vertex AI SDK (with Agent Engine support)
|
|
70
76
|
pip install google-cloud-aiplatform[agent_engines]>=1.120.0
|
|
@@ -82,6 +88,7 @@ pip install a2a-sdk>=0.3.4
|
|
|
82
88
|
```
|
|
83
89
|
|
|
84
90
|
**All dependencies at once:**
|
|
91
|
+
|
|
85
92
|
```bash
|
|
86
93
|
pip install --upgrade \
|
|
87
94
|
'google-cloud-aiplatform[agent_engines]>=1.120.0' \
|
|
@@ -97,6 +104,7 @@ pip install --upgrade \
|
|
|
97
104
|
The `gcloud` CLI is used for IAM policy queries, Cloud Monitoring, and Cloud Logging -- **not** for Agent Engine CRUD operations. There is no `gcloud ai agents`, `gcloud ai reasoning-engines`, or `gcloud alpha ai agent-engines` CLI surface. All Agent Engine operations use the Python SDK.
|
|
98
105
|
|
|
99
106
|
**Install gcloud CLI:**
|
|
107
|
+
|
|
100
108
|
```bash
|
|
101
109
|
# Install gcloud (if not already installed)
|
|
102
110
|
curl https://sdk.cloud.google.com | bash
|
|
@@ -107,6 +115,7 @@ gcloud components update
|
|
|
107
115
|
```
|
|
108
116
|
|
|
109
117
|
**Verify Installation:**
|
|
118
|
+
|
|
110
119
|
```bash
|
|
111
120
|
gcloud --version
|
|
112
121
|
# Should show: Google Cloud SDK 450.0.0+ (or higher)
|
|
@@ -125,6 +134,7 @@ for engine in client.agent_engines.list():
|
|
|
125
134
|
**This plugin works with agents deployed via:**
|
|
126
135
|
|
|
127
136
|
1. **ADK Deployment to Agent Engine:**
|
|
137
|
+
|
|
128
138
|
```python
|
|
129
139
|
import vertexai
|
|
130
140
|
from google.adk.agents import Agent
|
|
@@ -141,7 +151,8 @@ agent_engine = client.agent_engines.create(
|
|
|
141
151
|
)
|
|
142
152
|
```
|
|
143
153
|
|
|
144
|
-
|
|
154
|
+
1. **Terraform Deployment:**
|
|
155
|
+
|
|
145
156
|
```hcl
|
|
146
157
|
resource "google_vertex_ai_reasoning_engine" "agent" {
|
|
147
158
|
display_name = "my-agent"
|
|
@@ -160,7 +171,8 @@ resource "google_vertex_ai_reasoning_engine" "agent" {
|
|
|
160
171
|
}
|
|
161
172
|
```
|
|
162
173
|
|
|
163
|
-
|
|
174
|
+
1. **Direct SDK Deployment:**
|
|
175
|
+
|
|
164
176
|
```python
|
|
165
177
|
# Custom agent template (NOT LangChain)
|
|
166
178
|
from vertexai.preview.reasoning_engines import ReasoningEngine
|
|
@@ -193,9 +205,11 @@ agent = ReasoningEngine.create(
|
|
|
193
205
|
## Components
|
|
194
206
|
|
|
195
207
|
### Agent
|
|
208
|
+
|
|
196
209
|
- **vertex-engine-inspector**: Comprehensive agent inspector with validation logic
|
|
197
210
|
|
|
198
211
|
### Skills (Auto-Activating)
|
|
212
|
+
|
|
199
213
|
- **vertex-engine-inspector**: Triggers on "inspect agent engine", "validate deployment"
|
|
200
214
|
- **Tool Permissions**: Read, Grep, Glob, Bash (read-only)
|
|
201
215
|
- **Version**: 2.1.0 (2026 schema compliant)
|
|
@@ -279,45 +293,58 @@ The plugin generates a production readiness score based on:
|
|
|
279
293
|
## Integration with Other Plugins
|
|
280
294
|
|
|
281
295
|
### jeremy-adk-orchestrator
|
|
296
|
+
|
|
282
297
|
- Orchestrator deploys → Inspector validates
|
|
283
298
|
- Continuous feedback loop
|
|
284
299
|
|
|
285
300
|
### jeremy-vertex-validator
|
|
301
|
+
|
|
286
302
|
- Validator checks code → Inspector checks runtime
|
|
287
303
|
- Pre/post deployment validation
|
|
288
304
|
|
|
289
305
|
### jeremy-adk-terraform
|
|
306
|
+
|
|
290
307
|
- Terraform provisions → Inspector validates
|
|
291
308
|
- Infrastructure verification
|
|
292
309
|
|
|
293
310
|
## Use Cases
|
|
294
311
|
|
|
295
312
|
### Pre-Production Validation
|
|
313
|
+
|
|
296
314
|
Before deploying to production:
|
|
315
|
+
|
|
297
316
|
```
|
|
298
317
|
"Run production readiness check on staging agent"
|
|
299
318
|
```
|
|
300
319
|
|
|
301
320
|
### Post-Deployment Verification
|
|
321
|
+
|
|
302
322
|
After deployment:
|
|
323
|
+
|
|
303
324
|
```
|
|
304
325
|
"Validate agent-xyz deployment was successful"
|
|
305
326
|
```
|
|
306
327
|
|
|
307
328
|
### Ongoing Health Monitoring
|
|
329
|
+
|
|
308
330
|
Regular health checks:
|
|
331
|
+
|
|
309
332
|
```
|
|
310
333
|
"Monitor agent health for the last 7 days"
|
|
311
334
|
```
|
|
312
335
|
|
|
313
336
|
### Security Audits
|
|
337
|
+
|
|
314
338
|
Compliance validation:
|
|
339
|
+
|
|
315
340
|
```
|
|
316
341
|
"Perform security audit on production agents"
|
|
317
342
|
```
|
|
318
343
|
|
|
319
344
|
### Troubleshooting
|
|
345
|
+
|
|
320
346
|
When issues occur:
|
|
347
|
+
|
|
321
348
|
```
|
|
322
349
|
"Why is my agent responding slowly?"
|
|
323
350
|
"Investigate high error rate on agent-abc"
|
|
@@ -348,12 +375,14 @@ Status: 🟢 PRODUCTION READY (87%)
|
|
|
348
375
|
**New in 2025**: Vertex AI Agent Engine provides a built-in observability dashboard for monitoring agent performance.
|
|
349
376
|
|
|
350
377
|
**Access the Dashboard:**
|
|
378
|
+
|
|
351
379
|
```bash
|
|
352
380
|
# Navigate to Cloud Console
|
|
353
381
|
https://console.cloud.google.com/vertex-ai/agent-engines/[AGENT_ENGINE_ID]/observability?project=[PROJECT_ID]
|
|
354
382
|
```
|
|
355
383
|
|
|
356
384
|
**Key Metrics Available:**
|
|
385
|
+
|
|
357
386
|
- **Request Volume**: Total queries processed over time
|
|
358
387
|
- **Latency Distribution**: p50, p90, p95, p99 response times
|
|
359
388
|
- **Error Rates**: Failed requests, timeout errors, model errors
|
|
@@ -393,6 +422,7 @@ with tracer.start_as_current_span("agent_query") as span:
|
|
|
393
422
|
```
|
|
394
423
|
|
|
395
424
|
**View traces in Cloud Console:**
|
|
425
|
+
|
|
396
426
|
```bash
|
|
397
427
|
# Navigate to Trace Explorer
|
|
398
428
|
https://console.cloud.google.com/traces/list?project=[PROJECT_ID]
|
|
@@ -510,6 +540,7 @@ policy = policy_client.create_alert_policy(
|
|
|
510
540
|
```
|
|
511
541
|
|
|
512
542
|
**Common alert conditions:**
|
|
543
|
+
|
|
513
544
|
- Error rate exceeds 5% for 5 minutes
|
|
514
545
|
- p95 latency exceeds 10 seconds
|
|
515
546
|
- Memory Bank cache hit rate drops below 60%
|
package/package.json
CHANGED
|
@@ -1,15 +1,25 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: vertex-engine-inspector
|
|
3
|
-
description:
|
|
4
|
-
|
|
3
|
+
description: 'Inspect and validate Vertex AI Agent Engine deployments including Code
|
|
4
|
+
Execution Sandbox, Memory Bank, A2A protocol compliance, and security posture. Generates
|
|
5
|
+
production readiness scores. Use when asked to inspect, validate, or audit an Agent
|
|
6
|
+
Engine deployment. Trigger with "inspect agent engine", "validate agent engine deployment",
|
|
7
|
+
"check agent engine config", "audit agent engine security", "agent engine readiness
|
|
8
|
+
check", "vertex engine health", or "reasoning engine status".
|
|
9
|
+
|
|
10
|
+
'
|
|
5
11
|
allowed-tools: Read, Grep, Glob, Bash(cmd:*)
|
|
6
12
|
version: 2.1.0
|
|
7
13
|
author: Jeremy Longshore <jeremy@intentsolutions.io>
|
|
8
14
|
license: MIT
|
|
9
|
-
|
|
10
|
-
argument-hint: "<project-id> <agent-engine-id> [location]"
|
|
15
|
+
argument-hint: <project-id> <agent-engine-id> [location]
|
|
11
16
|
effort: high
|
|
12
|
-
tags:
|
|
17
|
+
tags:
|
|
18
|
+
- ai
|
|
19
|
+
- deployment
|
|
20
|
+
- security
|
|
21
|
+
- compliance
|
|
22
|
+
compatibility: Designed for Claude Code, also compatible with Codex and OpenClaw
|
|
13
23
|
---
|
|
14
24
|
# Vertex Engine Inspector
|
|
15
25
|
|
|
@@ -77,8 +87,8 @@ See `${CLAUDE_SKILL_DIR}/references/errors.md` for additional error scenarios.
|
|
|
77
87
|
|
|
78
88
|
## Resources
|
|
79
89
|
|
|
80
|
-
-
|
|
81
|
-
-
|
|
90
|
+
- Vertex AI Agent Engine Documentation -- deployment and configuration
|
|
91
|
+
- A2A Protocol Specification -- AgentCard, Task API, protocol compliance
|
|
82
92
|
- [Cloud Monitoring API](https://cloud.google.com/monitoring/api/v3) -- metrics queries and dashboard configuration
|
|
83
93
|
- [VPC Service Controls](https://cloud.google.com/vpc-service-controls/docs) -- perimeter setup and access policies
|
|
84
|
-
-
|
|
94
|
+
- Model Armor -- prompt injection protection configuration
|
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
## Common gcloud CLI Misconceptions
|
|
22
22
|
|
|
23
23
|
**There is no `gcloud` CLI for Agent Engine.** The following commands do NOT exist and will fail:
|
|
24
|
+
|
|
24
25
|
- `gcloud ai agents describe` / `gcloud ai agents list`
|
|
25
26
|
- `gcloud ai reasoning-engines list`
|
|
26
27
|
- `gcloud alpha ai agent-engines list`
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
## Inspection Categories
|
|
4
4
|
|
|
5
5
|
### 1. Runtime Configuration ✅
|
|
6
|
+
|
|
6
7
|
- Model selection (Gemini 2.5 Pro/Flash)
|
|
7
8
|
- Tools enabled (Code Execution, Memory Bank, custom)
|
|
8
9
|
- VPC configuration
|
|
@@ -10,6 +11,7 @@
|
|
|
10
11
|
- Scaling policies
|
|
11
12
|
|
|
12
13
|
### 2. Code Execution Sandbox 🔒
|
|
14
|
+
|
|
13
15
|
- **Security**: Isolated environment, no external network access
|
|
14
16
|
- **State Persistence**: TTL validation (1-14 days)
|
|
15
17
|
- **IAM**: Least privilege permissions
|
|
@@ -17,6 +19,7 @@
|
|
|
17
19
|
- **Concurrent Executions**: Max concurrent code runs
|
|
18
20
|
|
|
19
21
|
**Critical Checks**:
|
|
22
|
+
|
|
20
23
|
```
|
|
21
24
|
✅ State TTL between 7-14 days (optimal for production)
|
|
22
25
|
✅ Sandbox type is SECURE_ISOLATED
|
|
@@ -27,6 +30,7 @@
|
|
|
27
30
|
```
|
|
28
31
|
|
|
29
32
|
### 3. Memory Bank Configuration 🧠
|
|
33
|
+
|
|
30
34
|
- **Enabled Status**: Persistent memory active
|
|
31
35
|
- **Retention Policy**: Max memories, retention days
|
|
32
36
|
- **Storage Backend**: Firestore encryption & region
|
|
@@ -34,6 +38,7 @@
|
|
|
34
38
|
- **Auto-Cleanup**: Quota management
|
|
35
39
|
|
|
36
40
|
**Critical Checks**:
|
|
41
|
+
|
|
37
42
|
```
|
|
38
43
|
✅ Max memories >= 100 (prevents conversation truncation)
|
|
39
44
|
✅ Indexing enabled (fast query performance)
|
|
@@ -43,6 +48,7 @@
|
|
|
43
48
|
```
|
|
44
49
|
|
|
45
50
|
### 4. A2A Protocol Compliance 🔗
|
|
51
|
+
|
|
46
52
|
- **AgentCard**: Available at `/.well-known/agent-card`
|
|
47
53
|
- **Task API**: `POST /v1/tasks:send` responds correctly
|
|
48
54
|
- **Status API**: `GET /v1/tasks/{task_id}` accessible
|
|
@@ -50,6 +56,7 @@
|
|
|
50
56
|
- **Required Fields**: name, description, tools, version
|
|
51
57
|
|
|
52
58
|
**Compliance Report**:
|
|
59
|
+
|
|
53
60
|
```
|
|
54
61
|
✅ AgentCard accessible and valid
|
|
55
62
|
✅ Task submission API functional
|
|
@@ -60,6 +67,7 @@
|
|
|
60
67
|
```
|
|
61
68
|
|
|
62
69
|
### 5. Security Posture 🛡️
|
|
70
|
+
|
|
63
71
|
- **IAM Roles**: Least privilege validation
|
|
64
72
|
- **VPC Service Controls**: Perimeter protection
|
|
65
73
|
- **Model Armor**: Prompt injection protection
|
|
@@ -68,6 +76,7 @@
|
|
|
68
76
|
- **Secret Management**: No hardcoded credentials
|
|
69
77
|
|
|
70
78
|
**Security Score**:
|
|
79
|
+
|
|
71
80
|
```
|
|
72
81
|
🟢 SECURE (90-100%): Production ready
|
|
73
82
|
🟡 NEEDS ATTENTION (70-89%): Address issues before prod
|
|
@@ -75,6 +84,7 @@
|
|
|
75
84
|
```
|
|
76
85
|
|
|
77
86
|
### 6. Performance Metrics 📊
|
|
87
|
+
|
|
78
88
|
- **Auto-Scaling**: Min/max instances configured
|
|
79
89
|
- **Resource Limits**: CPU, memory appropriate
|
|
80
90
|
- **Latency**: P50, P95, P99 within SLOs
|
|
@@ -83,6 +93,7 @@
|
|
|
83
93
|
- **Error Rate**: < 5% target
|
|
84
94
|
|
|
85
95
|
**Health Status**:
|
|
96
|
+
|
|
86
97
|
```
|
|
87
98
|
🟢 HEALTHY: Error rate < 5%, latency < 3s (p95)
|
|
88
99
|
🟡 DEGRADED: Error rate 5-10% or latency 3-5s
|
|
@@ -90,6 +101,7 @@
|
|
|
90
101
|
```
|
|
91
102
|
|
|
92
103
|
### 7. Monitoring & Observability 📈
|
|
104
|
+
|
|
93
105
|
- **Cloud Monitoring**: Dashboards configured
|
|
94
106
|
- **Alerting**: Policies for errors, latency, costs
|
|
95
107
|
- **Logging**: Structured logs aggregated
|
|
@@ -97,8 +109,9 @@
|
|
|
97
109
|
- **Error Tracking**: Cloud Error Reporting
|
|
98
110
|
|
|
99
111
|
**Observability Score**:
|
|
112
|
+
|
|
100
113
|
```
|
|
101
114
|
✅ All 5 pillars configured: Metrics, Logs, Traces, Alerts, Dashboards
|
|
102
115
|
⚠️ Missing alerts for critical scenarios
|
|
103
116
|
❌ No monitoring configured (production blocker)
|
|
104
|
-
```
|
|
117
|
+
```
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
## Inspection Workflow
|
|
4
4
|
|
|
5
5
|
### Phase 1: Configuration Analysis
|
|
6
|
+
|
|
6
7
|
```
|
|
7
8
|
1. Connect to Agent Engine
|
|
8
9
|
2. Retrieve agent metadata
|
|
@@ -13,6 +14,7 @@
|
|
|
13
14
|
```
|
|
14
15
|
|
|
15
16
|
### Phase 2: Protocol Validation
|
|
17
|
+
|
|
16
18
|
```
|
|
17
19
|
1. Test AgentCard endpoint
|
|
18
20
|
2. Validate AgentCard structure
|
|
@@ -22,6 +24,7 @@
|
|
|
22
24
|
```
|
|
23
25
|
|
|
24
26
|
### Phase 3: Security Audit
|
|
27
|
+
|
|
25
28
|
```
|
|
26
29
|
1. Review IAM roles and permissions
|
|
27
30
|
2. Check VPC Service Controls
|
|
@@ -32,6 +35,7 @@
|
|
|
32
35
|
```
|
|
33
36
|
|
|
34
37
|
### Phase 4: Performance Analysis
|
|
38
|
+
|
|
35
39
|
```
|
|
36
40
|
1. Query Cloud Monitoring metrics
|
|
37
41
|
2. Calculate error rate (last 24h)
|
|
@@ -42,6 +46,7 @@
|
|
|
42
46
|
```
|
|
43
47
|
|
|
44
48
|
### Phase 5: Production Readiness
|
|
49
|
+
|
|
45
50
|
```
|
|
46
51
|
1. Run all checklist items (28 checks)
|
|
47
52
|
2. Calculate category scores
|
|
@@ -49,4 +54,4 @@
|
|
|
49
54
|
4. Determine readiness status
|
|
50
55
|
5. Generate recommendations
|
|
51
56
|
6. Create action plan
|
|
52
|
-
```
|
|
57
|
+
```
|
|
@@ -26,23 +26,19 @@ CHECKS = {
|
|
|
26
26
|
"audit_logging": {"weight": 10, "category": "Compliance"},
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
+
|
|
29
30
|
class Colors:
|
|
30
|
-
GREEN =
|
|
31
|
-
YELLOW =
|
|
32
|
-
RED =
|
|
33
|
-
BLUE =
|
|
34
|
-
NC =
|
|
31
|
+
GREEN = "\033[0;32m"
|
|
32
|
+
YELLOW = "\033[1;33m"
|
|
33
|
+
RED = "\033[0;31m"
|
|
34
|
+
BLUE = "\033[0;34m"
|
|
35
|
+
NC = "\033[0m"
|
|
35
36
|
|
|
36
37
|
|
|
37
38
|
def run_command(cmd: List[str]) -> Tuple[int, str]:
|
|
38
39
|
"""Run command and return exit code and output"""
|
|
39
40
|
try:
|
|
40
|
-
result = subprocess.run(
|
|
41
|
-
cmd,
|
|
42
|
-
capture_output=True,
|
|
43
|
-
text=True,
|
|
44
|
-
timeout=30
|
|
45
|
-
)
|
|
41
|
+
result = subprocess.run(cmd, capture_output=True, text=True, timeout=30)
|
|
46
42
|
return result.returncode, result.stdout
|
|
47
43
|
except Exception as e:
|
|
48
44
|
return 1, str(e)
|
|
@@ -54,10 +50,13 @@ def check_iam_permissions(project_id: str, service_account: str) -> Tuple[bool,
|
|
|
54
50
|
return False, "No service account configured"
|
|
55
51
|
|
|
56
52
|
cmd = [
|
|
57
|
-
"gcloud",
|
|
53
|
+
"gcloud",
|
|
54
|
+
"projects",
|
|
55
|
+
"get-iam-policy",
|
|
56
|
+
project_id,
|
|
58
57
|
"--flatten=bindings[].members",
|
|
59
58
|
f"--filter=bindings.members:serviceAccount:{service_account}",
|
|
60
|
-
"--format=json"
|
|
59
|
+
"--format=json",
|
|
61
60
|
]
|
|
62
61
|
|
|
63
62
|
returncode, output = run_command(cmd)
|
|
@@ -84,10 +83,9 @@ def check_vpc_configuration(project_id: str, region: str, agent_id: str) -> Tupl
|
|
|
84
83
|
"""
|
|
85
84
|
try:
|
|
86
85
|
import vertexai
|
|
86
|
+
|
|
87
87
|
client = vertexai.Client(project=project_id, location=region)
|
|
88
|
-
engine = client.agent_engines.get(
|
|
89
|
-
name=f"projects/{project_id}/locations/{region}/reasoningEngines/{agent_id}"
|
|
90
|
-
)
|
|
88
|
+
engine = client.agent_engines.get(name=f"projects/{project_id}/locations/{region}/reasoningEngines/{agent_id}")
|
|
91
89
|
# Check for VPC/network config in the engine metadata
|
|
92
90
|
vpc_config = getattr(engine, "network", None) or getattr(engine, "network_config", None)
|
|
93
91
|
|
|
@@ -105,11 +103,7 @@ def check_encryption(project_id: str) -> Tuple[bool, str]:
|
|
|
105
103
|
"""Check encryption settings"""
|
|
106
104
|
# For Vertex AI, encryption at rest is enabled by default
|
|
107
105
|
# Check if customer-managed encryption keys (CMEK) are used
|
|
108
|
-
cmd = [
|
|
109
|
-
"gcloud", "kms", "keyrings", "list",
|
|
110
|
-
f"--project={project_id}",
|
|
111
|
-
"--format=json"
|
|
112
|
-
]
|
|
106
|
+
cmd = ["gcloud", "kms", "keyrings", "list", f"--project={project_id}", "--format=json"]
|
|
113
107
|
|
|
114
108
|
returncode, output = run_command(cmd)
|
|
115
109
|
if returncode != 0:
|
|
@@ -127,11 +121,7 @@ def check_encryption(project_id: str) -> Tuple[bool, str]:
|
|
|
127
121
|
|
|
128
122
|
def check_audit_logging(project_id: str) -> Tuple[bool, str]:
|
|
129
123
|
"""Check if audit logging is enabled"""
|
|
130
|
-
cmd = [
|
|
131
|
-
"gcloud", "logging", "sinks", "list",
|
|
132
|
-
f"--project={project_id}",
|
|
133
|
-
"--format=json"
|
|
134
|
-
]
|
|
124
|
+
cmd = ["gcloud", "logging", "sinks", "list", f"--project={project_id}", "--format=json"]
|
|
135
125
|
|
|
136
126
|
returncode, output = run_command(cmd)
|
|
137
127
|
if returncode != 0:
|
|
@@ -210,13 +200,14 @@ def main():
|
|
|
210
200
|
service_account = ""
|
|
211
201
|
try:
|
|
212
202
|
import vertexai
|
|
203
|
+
|
|
213
204
|
client = vertexai.Client(project=project_id, location=region)
|
|
214
|
-
engine = client.agent_engines.get(
|
|
215
|
-
name=f"projects/{project_id}/locations/{region}/reasoningEngines/{agent_id}"
|
|
216
|
-
)
|
|
205
|
+
engine = client.agent_engines.get(name=f"projects/{project_id}/locations/{region}/reasoningEngines/{agent_id}")
|
|
217
206
|
service_account = getattr(engine, "service_account", "") or ""
|
|
218
207
|
except ImportError:
|
|
219
|
-
print(
|
|
208
|
+
print(
|
|
209
|
+
f"{Colors.YELLOW}Warning: vertexai SDK not installed. Install with: pip install google-cloud-aiplatform[agent_engines]{Colors.NC}"
|
|
210
|
+
)
|
|
220
211
|
except Exception as e:
|
|
221
212
|
print(f"{Colors.YELLOW}Warning: Could not retrieve agent engine info: {e}{Colors.NC}")
|
|
222
213
|
|
|
@@ -227,7 +218,7 @@ def main():
|
|
|
227
218
|
|
|
228
219
|
results["service_account_configured"] = (
|
|
229
220
|
bool(service_account),
|
|
230
|
-
f"Service account: {service_account}" if service_account else "No service account"
|
|
221
|
+
f"Service account: {service_account}" if service_account else "No service account",
|
|
231
222
|
)
|
|
232
223
|
|
|
233
224
|
results["iam_least_privilege"] = check_iam_permissions(project_id, service_account)
|