unoverse 0.1.126 → 0.1.127
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/operator/infra/aws/main.tf +40 -3
- package/package.json +1 -1
|
@@ -271,6 +271,28 @@ resource "aws_instance" "app" {
|
|
|
271
271
|
volume_type = "gp3"
|
|
272
272
|
}
|
|
273
273
|
|
|
274
|
+
# IMDSv2 REQUIRED, and this is not optional in a governed account.
|
|
275
|
+
#
|
|
276
|
+
# AWS's own recommended guardrail denies ec2:RunInstances unless the launch enforces
|
|
277
|
+
# IMDSv2, and organisations apply it as a Service Control Policy. Without this block the
|
|
278
|
+
# AWS default is `optional`, the condition is not met, and the deny fires:
|
|
279
|
+
#
|
|
280
|
+
# UnauthorizedOperation ... ec2:RunInstances ... with an explicit deny in a service
|
|
281
|
+
# control policy
|
|
282
|
+
#
|
|
283
|
+
# That error names no condition, so it reads as "EC2 is banned here" and sends you to your
|
|
284
|
+
# cloud team for a policy change you do not need. The condition is visible only by
|
|
285
|
+
# decoding the failure message (`aws sts decode-authorization-message`), which showed
|
|
286
|
+
# `ec2:MetadataHttpTokens = required`. Proved by dry run 2026-08-06: identical launch
|
|
287
|
+
# refused without this block, accepted with it.
|
|
288
|
+
#
|
|
289
|
+
# It is the right default everywhere regardless. IMDSv1 lets any process that can forge a
|
|
290
|
+
# simple GET read the instance's credentials; IMDSv2 requires a signed token first.
|
|
291
|
+
metadata_options {
|
|
292
|
+
http_endpoint = "enabled"
|
|
293
|
+
http_tokens = "required"
|
|
294
|
+
}
|
|
295
|
+
|
|
274
296
|
tags = { Name = "${var.name}-app" }
|
|
275
297
|
}
|
|
276
298
|
|
|
@@ -589,10 +611,25 @@ resource "aws_iam_user_policy" "bedrock" {
|
|
|
589
611
|
Version = "2012-10-17"
|
|
590
612
|
Statement = [{
|
|
591
613
|
Effect = "Allow"
|
|
614
|
+
# WIDE ON RUNTIME, silent on spending.
|
|
615
|
+
#
|
|
616
|
+
# Three named Invoke actions dated fast. `Converse` is the current unified API and the
|
|
617
|
+
# Bedrock nodes already call it; `ApplyGuardrail` is a separate action the guardrail
|
|
618
|
+
# node needs; knowledge bases add `Retrieve`. Each arrival meant editing this list,
|
|
619
|
+
# re-applying, and in a managed account asking an administrator again.
|
|
620
|
+
#
|
|
621
|
+
# NOT `bedrock:*`. That includes CreateProvisionedModelThroughput, which commits money.
|
|
622
|
+
# Everything below is invoke-and-read: it cannot buy capacity, and it cannot create or
|
|
623
|
+
# delete a model or a guardrail.
|
|
624
|
+
#
|
|
625
|
+
# Model access is still granted per model in the Bedrock console. No policy grants it.
|
|
592
626
|
Action = [
|
|
593
|
-
"bedrock:InvokeModel",
|
|
594
|
-
"bedrock:
|
|
595
|
-
"bedrock:
|
|
627
|
+
"bedrock:InvokeModel*",
|
|
628
|
+
"bedrock:Converse*",
|
|
629
|
+
"bedrock:ApplyGuardrail",
|
|
630
|
+
"bedrock:Retrieve*",
|
|
631
|
+
"bedrock:List*",
|
|
632
|
+
"bedrock:Get*",
|
|
596
633
|
]
|
|
597
634
|
Resource = "*"
|
|
598
635
|
}]
|
package/package.json
CHANGED