@atensec/pulumi-thoth 0.1.5 → 0.1.6

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.
@@ -0,0 +1,52 @@
1
+ // *** WARNING: this file was generated by pulumi-language-nodejs. ***
2
+ // *** Do not edit by hand unless you're certain you know what you are doing! ***
3
+
4
+ import * as pulumi from "@pulumi/pulumi";
5
+ import * as utilities from "../utilities";
6
+
7
+ export function getEffectivePolicyBundles(args?: GetEffectivePolicyBundlesArgs, opts?: pulumi.InvokeOptions): Promise<GetEffectivePolicyBundlesResult> {
8
+ args = args || {};
9
+ opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
10
+ return pulumi.runtime.invoke("thoth:governance/getEffectivePolicyBundles:getEffectivePolicyBundles", {
11
+ "agentId": args.agentId,
12
+ "framework": args.framework,
13
+ }, opts);
14
+ }
15
+
16
+ /**
17
+ * A collection of arguments for invoking getEffectivePolicyBundles.
18
+ */
19
+ export interface GetEffectivePolicyBundlesArgs {
20
+ agentId?: string;
21
+ framework?: string;
22
+ }
23
+
24
+ /**
25
+ * A collection of values returned by getEffectivePolicyBundles.
26
+ */
27
+ export interface GetEffectivePolicyBundlesResult {
28
+ readonly agentId?: string;
29
+ readonly dataJson: string;
30
+ readonly framework?: string;
31
+ /**
32
+ * The provider-assigned unique ID for this managed resource.
33
+ */
34
+ readonly id: string;
35
+ readonly total: number;
36
+ }
37
+ export function getEffectivePolicyBundlesOutput(args?: GetEffectivePolicyBundlesOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetEffectivePolicyBundlesResult> {
38
+ args = args || {};
39
+ opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
40
+ return pulumi.runtime.invokeOutput("thoth:governance/getEffectivePolicyBundles:getEffectivePolicyBundles", {
41
+ "agentId": args.agentId,
42
+ "framework": args.framework,
43
+ }, opts);
44
+ }
45
+
46
+ /**
47
+ * A collection of arguments for invoking getEffectivePolicyBundles.
48
+ */
49
+ export interface GetEffectivePolicyBundlesOutputArgs {
50
+ agentId?: pulumi.Input<string | undefined>;
51
+ framework?: pulumi.Input<string | undefined>;
52
+ }
@@ -0,0 +1,46 @@
1
+ // *** WARNING: this file was generated by pulumi-language-nodejs. ***
2
+ // *** Do not edit by hand unless you're certain you know what you are doing! ***
3
+
4
+ import * as pulumi from "@pulumi/pulumi";
5
+ import * as utilities from "../utilities";
6
+
7
+ export function getPackRuleVersions(args: GetPackRuleVersionsArgs, opts?: pulumi.InvokeOptions): Promise<GetPackRuleVersionsResult> {
8
+ opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
9
+ return pulumi.runtime.invoke("thoth:governance/getPackRuleVersions:getPackRuleVersions", {
10
+ "packId": args.packId,
11
+ }, opts);
12
+ }
13
+
14
+ /**
15
+ * A collection of arguments for invoking getPackRuleVersions.
16
+ */
17
+ export interface GetPackRuleVersionsArgs {
18
+ packId: string;
19
+ }
20
+
21
+ /**
22
+ * A collection of values returned by getPackRuleVersions.
23
+ */
24
+ export interface GetPackRuleVersionsResult {
25
+ /**
26
+ * The provider-assigned unique ID for this managed resource.
27
+ */
28
+ readonly id: string;
29
+ readonly packId: string;
30
+ readonly responseJson: string;
31
+ readonly total: number;
32
+ readonly versionsJson: string;
33
+ }
34
+ export function getPackRuleVersionsOutput(args: GetPackRuleVersionsOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetPackRuleVersionsResult> {
35
+ opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
36
+ return pulumi.runtime.invokeOutput("thoth:governance/getPackRuleVersions:getPackRuleVersions", {
37
+ "packId": args.packId,
38
+ }, opts);
39
+ }
40
+
41
+ /**
42
+ * A collection of arguments for invoking getPackRuleVersions.
43
+ */
44
+ export interface GetPackRuleVersionsOutputArgs {
45
+ packId: pulumi.Input<string>;
46
+ }
@@ -0,0 +1,49 @@
1
+ // *** WARNING: this file was generated by pulumi-language-nodejs. ***
2
+ // *** Do not edit by hand unless you're certain you know what you are doing! ***
3
+
4
+ import * as pulumi from "@pulumi/pulumi";
5
+ import * as utilities from "../utilities";
6
+
7
+ export function getPackRules(args: GetPackRulesArgs, opts?: pulumi.InvokeOptions): Promise<GetPackRulesResult> {
8
+ opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
9
+ return pulumi.runtime.invoke("thoth:governance/getPackRules:getPackRules", {
10
+ "packId": args.packId,
11
+ }, opts);
12
+ }
13
+
14
+ /**
15
+ * A collection of arguments for invoking getPackRules.
16
+ */
17
+ export interface GetPackRulesArgs {
18
+ packId: string;
19
+ }
20
+
21
+ /**
22
+ * A collection of values returned by getPackRules.
23
+ */
24
+ export interface GetPackRulesResult {
25
+ readonly basePackVersion: string;
26
+ readonly currentVersionJson: string;
27
+ readonly displayName: string;
28
+ /**
29
+ * The provider-assigned unique ID for this managed resource.
30
+ */
31
+ readonly id: string;
32
+ readonly packId: string;
33
+ readonly regulation: string;
34
+ readonly responseJson: string;
35
+ readonly totalVersions: number;
36
+ }
37
+ export function getPackRulesOutput(args: GetPackRulesOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetPackRulesResult> {
38
+ opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
39
+ return pulumi.runtime.invokeOutput("thoth:governance/getPackRules:getPackRules", {
40
+ "packId": args.packId,
41
+ }, opts);
42
+ }
43
+
44
+ /**
45
+ * A collection of arguments for invoking getPackRules.
46
+ */
47
+ export interface GetPackRulesOutputArgs {
48
+ packId: pulumi.Input<string>;
49
+ }
@@ -0,0 +1,62 @@
1
+ // *** WARNING: this file was generated by pulumi-language-nodejs. ***
2
+ // *** Do not edit by hand unless you're certain you know what you are doing! ***
3
+
4
+ import * as pulumi from "@pulumi/pulumi";
5
+ import * as utilities from "../utilities";
6
+
7
+ export function getPolicyBundles(args?: GetPolicyBundlesArgs, opts?: pulumi.InvokeOptions): Promise<GetPolicyBundlesResult> {
8
+ args = args || {};
9
+ opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
10
+ return pulumi.runtime.invoke("thoth:governance/getPolicyBundles:getPolicyBundles", {
11
+ "assignment": args.assignment,
12
+ "enforcementMode": args.enforcementMode,
13
+ "framework": args.framework,
14
+ "status": args.status,
15
+ }, opts);
16
+ }
17
+
18
+ /**
19
+ * A collection of arguments for invoking getPolicyBundles.
20
+ */
21
+ export interface GetPolicyBundlesArgs {
22
+ assignment?: string;
23
+ enforcementMode?: string;
24
+ framework?: string;
25
+ status?: string;
26
+ }
27
+
28
+ /**
29
+ * A collection of values returned by getPolicyBundles.
30
+ */
31
+ export interface GetPolicyBundlesResult {
32
+ readonly assignment?: string;
33
+ readonly dataJson: string;
34
+ readonly enforcementMode?: string;
35
+ readonly framework?: string;
36
+ /**
37
+ * The provider-assigned unique ID for this managed resource.
38
+ */
39
+ readonly id: string;
40
+ readonly status?: string;
41
+ readonly total: number;
42
+ }
43
+ export function getPolicyBundlesOutput(args?: GetPolicyBundlesOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetPolicyBundlesResult> {
44
+ args = args || {};
45
+ opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts || {});
46
+ return pulumi.runtime.invokeOutput("thoth:governance/getPolicyBundles:getPolicyBundles", {
47
+ "assignment": args.assignment,
48
+ "enforcementMode": args.enforcementMode,
49
+ "framework": args.framework,
50
+ "status": args.status,
51
+ }, opts);
52
+ }
53
+
54
+ /**
55
+ * A collection of arguments for invoking getPolicyBundles.
56
+ */
57
+ export interface GetPolicyBundlesOutputArgs {
58
+ assignment?: pulumi.Input<string | undefined>;
59
+ enforcementMode?: pulumi.Input<string | undefined>;
60
+ framework?: pulumi.Input<string | undefined>;
61
+ status?: pulumi.Input<string | undefined>;
62
+ }
@@ -19,6 +19,7 @@ export interface GetTenantSettingsResult {
19
19
  * The provider-assigned unique ID for this managed resource.
20
20
  */
21
21
  readonly id: string;
22
+ readonly regulatoryRegimes: string[];
22
23
  readonly settingsJson: string;
23
24
  readonly tenantId: string;
24
25
  readonly toolRiskOverrides: {[key: string]: string};
@@ -64,6 +64,10 @@ export class GovernanceSettings extends pulumi.CustomResource {
64
64
  * Failover provider order.
65
65
  */
66
66
  declare public readonly modelRouterFailoverProviders: pulumi.Output<string[] | undefined>;
67
+ /**
68
+ * Explicit regulatory regimes for onboarding baseline auto-pack loading (for example: soc2, hipaa, gdpr, fedramp, sec_cftc). Defaults to SOC2 when unset.
69
+ */
70
+ declare public readonly regulatoryRegimes: pulumi.Output<string[] | undefined>;
67
71
  /**
68
72
  * Allowed host patterns for secret broker.
69
73
  */
@@ -138,6 +142,7 @@ export class GovernanceSettings extends pulumi.CustomResource {
138
142
  resourceInputs["modelRouterDefaultProvider"] = state?.modelRouterDefaultProvider;
139
143
  resourceInputs["modelRouterEnabled"] = state?.modelRouterEnabled;
140
144
  resourceInputs["modelRouterFailoverProviders"] = state?.modelRouterFailoverProviders;
145
+ resourceInputs["regulatoryRegimes"] = state?.regulatoryRegimes;
141
146
  resourceInputs["secretBrokerAllowedHosts"] = state?.secretBrokerAllowedHosts;
142
147
  resourceInputs["secretBrokerAuthBindingsJson"] = state?.secretBrokerAuthBindingsJson;
143
148
  resourceInputs["secretBrokerEnabled"] = state?.secretBrokerEnabled;
@@ -161,6 +166,7 @@ export class GovernanceSettings extends pulumi.CustomResource {
161
166
  resourceInputs["modelRouterDefaultProvider"] = args?.modelRouterDefaultProvider;
162
167
  resourceInputs["modelRouterEnabled"] = args?.modelRouterEnabled;
163
168
  resourceInputs["modelRouterFailoverProviders"] = args?.modelRouterFailoverProviders;
169
+ resourceInputs["regulatoryRegimes"] = args?.regulatoryRegimes;
164
170
  resourceInputs["secretBrokerAllowedHosts"] = args?.secretBrokerAllowedHosts;
165
171
  resourceInputs["secretBrokerAuthBindingsJson"] = args?.secretBrokerAuthBindingsJson;
166
172
  resourceInputs["secretBrokerEnabled"] = args?.secretBrokerEnabled;
@@ -216,6 +222,10 @@ export interface GovernanceSettingsState {
216
222
  * Failover provider order.
217
223
  */
218
224
  modelRouterFailoverProviders?: pulumi.Input<pulumi.Input<string>[] | undefined>;
225
+ /**
226
+ * Explicit regulatory regimes for onboarding baseline auto-pack loading (for example: soc2, hipaa, gdpr, fedramp, sec_cftc). Defaults to SOC2 when unset.
227
+ */
228
+ regulatoryRegimes?: pulumi.Input<pulumi.Input<string>[] | undefined>;
219
229
  /**
220
230
  * Allowed host patterns for secret broker.
221
231
  */
@@ -306,6 +316,10 @@ export interface GovernanceSettingsArgs {
306
316
  * Failover provider order.
307
317
  */
308
318
  modelRouterFailoverProviders?: pulumi.Input<pulumi.Input<string>[] | undefined>;
319
+ /**
320
+ * Explicit regulatory regimes for onboarding baseline auto-pack loading (for example: soc2, hipaa, gdpr, fedramp, sec_cftc). Defaults to SOC2 when unset.
321
+ */
322
+ regulatoryRegimes?: pulumi.Input<pulumi.Input<string>[] | undefined>;
309
323
  /**
310
324
  * Allowed host patterns for secret broker.
311
325
  */
@@ -35,6 +35,11 @@ export const getDay7Report: typeof import("./getDay7Report").getDay7Report = nul
35
35
  export const getDay7ReportOutput: typeof import("./getDay7Report").getDay7ReportOutput = null as any;
36
36
  utilities.lazyLoad(exports, ["getDay7Report","getDay7ReportOutput"], () => require("./getDay7Report"));
37
37
 
38
+ export { GetEffectivePolicyBundlesArgs, GetEffectivePolicyBundlesResult, GetEffectivePolicyBundlesOutputArgs } from "./getEffectivePolicyBundles";
39
+ export const getEffectivePolicyBundles: typeof import("./getEffectivePolicyBundles").getEffectivePolicyBundles = null as any;
40
+ export const getEffectivePolicyBundlesOutput: typeof import("./getEffectivePolicyBundles").getEffectivePolicyBundlesOutput = null as any;
41
+ utilities.lazyLoad(exports, ["getEffectivePolicyBundles","getEffectivePolicyBundlesOutput"], () => require("./getEffectivePolicyBundles"));
42
+
38
43
  export { GetEvidenceBundleArgs, GetEvidenceBundleResult, GetEvidenceBundleOutputArgs } from "./getEvidenceBundle";
39
44
  export const getEvidenceBundle: typeof import("./getEvidenceBundle").getEvidenceBundle = null as any;
40
45
  export const getEvidenceBundleOutput: typeof import("./getEvidenceBundle").getEvidenceBundleOutput = null as any;
@@ -60,11 +65,26 @@ export const getFeed: typeof import("./getFeed").getFeed = null as any;
60
65
  export const getFeedOutput: typeof import("./getFeed").getFeedOutput = null as any;
61
66
  utilities.lazyLoad(exports, ["getFeed","getFeedOutput"], () => require("./getFeed"));
62
67
 
68
+ export { GetPackRuleVersionsArgs, GetPackRuleVersionsResult, GetPackRuleVersionsOutputArgs } from "./getPackRuleVersions";
69
+ export const getPackRuleVersions: typeof import("./getPackRuleVersions").getPackRuleVersions = null as any;
70
+ export const getPackRuleVersionsOutput: typeof import("./getPackRuleVersions").getPackRuleVersionsOutput = null as any;
71
+ utilities.lazyLoad(exports, ["getPackRuleVersions","getPackRuleVersionsOutput"], () => require("./getPackRuleVersions"));
72
+
73
+ export { GetPackRulesArgs, GetPackRulesResult, GetPackRulesOutputArgs } from "./getPackRules";
74
+ export const getPackRules: typeof import("./getPackRules").getPackRules = null as any;
75
+ export const getPackRulesOutput: typeof import("./getPackRules").getPackRulesOutput = null as any;
76
+ utilities.lazyLoad(exports, ["getPackRules","getPackRulesOutput"], () => require("./getPackRules"));
77
+
63
78
  export { GetPacksResult } from "./getPacks";
64
79
  export const getPacks: typeof import("./getPacks").getPacks = null as any;
65
80
  export const getPacksOutput: typeof import("./getPacks").getPacksOutput = null as any;
66
81
  utilities.lazyLoad(exports, ["getPacks","getPacksOutput"], () => require("./getPacks"));
67
82
 
83
+ export { GetPolicyBundlesArgs, GetPolicyBundlesResult, GetPolicyBundlesOutputArgs } from "./getPolicyBundles";
84
+ export const getPolicyBundles: typeof import("./getPolicyBundles").getPolicyBundles = null as any;
85
+ export const getPolicyBundlesOutput: typeof import("./getPolicyBundles").getPolicyBundlesOutput = null as any;
86
+ utilities.lazyLoad(exports, ["getPolicyBundles","getPolicyBundlesOutput"], () => require("./getPolicyBundles"));
87
+
68
88
  export { GetReportsOverviewArgs, GetReportsOverviewResult, GetReportsOverviewOutputArgs } from "./getReportsOverview";
69
89
  export const getReportsOverview: typeof import("./getReportsOverview").getReportsOverview = null as any;
70
90
  export const getReportsOverviewOutput: typeof import("./getReportsOverview").getReportsOverviewOutput = null as any;
@@ -105,6 +125,11 @@ export type PamSettings = import("./pamSettings").PamSettings;
105
125
  export const PamSettings: typeof import("./pamSettings").PamSettings = null as any;
106
126
  utilities.lazyLoad(exports, ["PamSettings"], () => require("./pamSettings"));
107
127
 
128
+ export { PolicyBundleArgs, PolicyBundleState } from "./policyBundle";
129
+ export type PolicyBundle = import("./policyBundle").PolicyBundle;
130
+ export const PolicyBundle: typeof import("./policyBundle").PolicyBundle = null as any;
131
+ utilities.lazyLoad(exports, ["PolicyBundle"], () => require("./policyBundle"));
132
+
108
133
  export { PolicySyncArgs, PolicySyncState } from "./policySync";
109
134
  export type PolicySync = import("./policySync").PolicySync;
110
135
  export const PolicySync: typeof import("./policySync").PolicySync = null as any;
@@ -144,6 +169,8 @@ const _module = {
144
169
  return new PackAssignmentBulk(name, <any>undefined, { urn })
145
170
  case "thoth:governance/pamSettings:PamSettings":
146
171
  return new PamSettings(name, <any>undefined, { urn })
172
+ case "thoth:governance/policyBundle:PolicyBundle":
173
+ return new PolicyBundle(name, <any>undefined, { urn })
147
174
  case "thoth:governance/policySync:PolicySync":
148
175
  return new PolicySync(name, <any>undefined, { urn })
149
176
  case "thoth:governance/siemSettings:SiemSettings":
@@ -164,6 +191,7 @@ pulumi.runtime.registerResourceModule("thoth", "governance/governanceSettings",
164
191
  pulumi.runtime.registerResourceModule("thoth", "governance/packAssignment", _module)
165
192
  pulumi.runtime.registerResourceModule("thoth", "governance/packAssignmentBulk", _module)
166
193
  pulumi.runtime.registerResourceModule("thoth", "governance/pamSettings", _module)
194
+ pulumi.runtime.registerResourceModule("thoth", "governance/policyBundle", _module)
167
195
  pulumi.runtime.registerResourceModule("thoth", "governance/policySync", _module)
168
196
  pulumi.runtime.registerResourceModule("thoth", "governance/siemSettings", _module)
169
197
  pulumi.runtime.registerResourceModule("thoth", "governance/webhookSettings", _module)
@@ -0,0 +1,299 @@
1
+ // *** WARNING: this file was generated by pulumi-language-nodejs. ***
2
+ // *** Do not edit by hand unless you're certain you know what you are doing! ***
3
+
4
+ import * as pulumi from "@pulumi/pulumi";
5
+ import * as utilities from "../utilities";
6
+
7
+ export class PolicyBundle extends pulumi.CustomResource {
8
+ /**
9
+ * Get an existing PolicyBundle resource's state with the given name, ID, and optional extra
10
+ * properties used to qualify the lookup.
11
+ *
12
+ * @param name The _unique_ name of the resulting resource.
13
+ * @param id The _unique_ provider ID of the resource to lookup.
14
+ * @param state Any extra arguments used during the lookup.
15
+ * @param opts Optional settings to control the behavior of the CustomResource.
16
+ */
17
+ public static get(name: string, id: pulumi.Input<pulumi.ID>, state?: PolicyBundleState, opts?: pulumi.CustomResourceOptions): PolicyBundle {
18
+ return new PolicyBundle(name, <any>state, { ...opts, id: id });
19
+ }
20
+
21
+ /** @internal */
22
+ public static readonly __pulumiType = 'thoth:governance/policyBundle:PolicyBundle';
23
+
24
+ /**
25
+ * Returns true if the given object is an instance of PolicyBundle. This is designed to work even
26
+ * when multiple copies of the Pulumi SDK have been loaded into the same process.
27
+ */
28
+ public static isInstance(obj: any): obj is PolicyBundle {
29
+ if (obj === undefined || obj === null) {
30
+ return false;
31
+ }
32
+ return obj['__pulumiType'] === PolicyBundle.__pulumiType;
33
+ }
34
+
35
+ /**
36
+ * Assignment targets (for example: all, agent:security-analyst-agent, coding-agent). Defaults to all.
37
+ */
38
+ declare public readonly assignments: pulumi.Output<string[] | undefined>;
39
+ /**
40
+ * Creation timestamp.
41
+ */
42
+ declare public /*out*/ readonly createdAt: pulumi.Output<string>;
43
+ /**
44
+ * Creator identity.
45
+ */
46
+ declare public /*out*/ readonly createdBy: pulumi.Output<string>;
47
+ /**
48
+ * Optional policy bundle description.
49
+ */
50
+ declare public readonly description: pulumi.Output<string | undefined>;
51
+ /**
52
+ * Customer-facing policy mode: enforce or observe. Defaults to enforce.
53
+ */
54
+ declare public readonly enforcementMode: pulumi.Output<string | undefined>;
55
+ /**
56
+ * Optional expected SHA-256 hash (hex or sha256:<hex>) to enforce policy integrity.
57
+ */
58
+ declare public readonly expectedHash: pulumi.Output<string | undefined>;
59
+ /**
60
+ * Policy framework: OPA or CEDAR.
61
+ */
62
+ declare public readonly framework: pulumi.Output<string>;
63
+ /**
64
+ * Stable bundle name. Updates create a new version for the same name.
65
+ */
66
+ declare public readonly name: pulumi.Output<string>;
67
+ /**
68
+ * SHA-256 hash of policy content.
69
+ */
70
+ declare public /*out*/ readonly policyHash: pulumi.Output<string>;
71
+ /**
72
+ * Raw Rego/Cedar policy payload. Set this or source_uri/s3_uri.
73
+ */
74
+ declare public readonly rawPolicy: pulumi.Output<string | undefined>;
75
+ /**
76
+ * Resolved immutable source version (S3 version ID or file revision hint).
77
+ */
78
+ declare public /*out*/ readonly resolvedVersion: pulumi.Output<string>;
79
+ /**
80
+ * Legacy S3 source URI (for example: s3://bucket/path/policy.rego). Set this or raw_policy. Prefer source_uri.
81
+ */
82
+ declare public readonly s3Uri: pulumi.Output<string | undefined>;
83
+ /**
84
+ * Optional S3 object version ID to pin deterministic policy enforcement.
85
+ */
86
+ declare public readonly s3VersionId: pulumi.Output<string | undefined>;
87
+ /**
88
+ * Unified policy source URI (file:// or s3://). Set this or raw_policy.
89
+ */
90
+ declare public readonly sourceUri: pulumi.Output<string | undefined>;
91
+ /**
92
+ * Bundle lifecycle status: active, staged, paused, or disabled (alias of paused).
93
+ */
94
+ declare public readonly status: pulumi.Output<string | undefined>;
95
+ /**
96
+ * Tenant ID from provider configuration.
97
+ */
98
+ declare public /*out*/ readonly tenantId: pulumi.Output<string>;
99
+ /**
100
+ * Last update timestamp.
101
+ */
102
+ declare public /*out*/ readonly updatedAt: pulumi.Output<string>;
103
+ /**
104
+ * Monotonic policy bundle version.
105
+ */
106
+ declare public /*out*/ readonly version: pulumi.Output<number>;
107
+
108
+ /**
109
+ * Create a PolicyBundle resource with the given unique name, arguments, and options.
110
+ *
111
+ * @param name The _unique_ name of the resource.
112
+ * @param args The arguments to use to populate this resource's properties.
113
+ * @param opts A bag of options that control this resource's behavior.
114
+ */
115
+ constructor(name: string, args: PolicyBundleArgs, opts?: pulumi.CustomResourceOptions)
116
+ constructor(name: string, argsOrState?: PolicyBundleArgs | PolicyBundleState, opts?: pulumi.CustomResourceOptions) {
117
+ let resourceInputs: pulumi.Inputs = {};
118
+ opts = opts || {};
119
+ if (opts.id) {
120
+ const state = argsOrState as PolicyBundleState | undefined;
121
+ resourceInputs["assignments"] = state?.assignments;
122
+ resourceInputs["createdAt"] = state?.createdAt;
123
+ resourceInputs["createdBy"] = state?.createdBy;
124
+ resourceInputs["description"] = state?.description;
125
+ resourceInputs["enforcementMode"] = state?.enforcementMode;
126
+ resourceInputs["expectedHash"] = state?.expectedHash;
127
+ resourceInputs["framework"] = state?.framework;
128
+ resourceInputs["name"] = state?.name;
129
+ resourceInputs["policyHash"] = state?.policyHash;
130
+ resourceInputs["rawPolicy"] = state?.rawPolicy;
131
+ resourceInputs["resolvedVersion"] = state?.resolvedVersion;
132
+ resourceInputs["s3Uri"] = state?.s3Uri;
133
+ resourceInputs["s3VersionId"] = state?.s3VersionId;
134
+ resourceInputs["sourceUri"] = state?.sourceUri;
135
+ resourceInputs["status"] = state?.status;
136
+ resourceInputs["tenantId"] = state?.tenantId;
137
+ resourceInputs["updatedAt"] = state?.updatedAt;
138
+ resourceInputs["version"] = state?.version;
139
+ } else {
140
+ const args = argsOrState as PolicyBundleArgs | undefined;
141
+ if (args?.framework === undefined && !opts.urn) {
142
+ throw new Error("Missing required property 'framework'");
143
+ }
144
+ if (args?.name === undefined && !opts.urn) {
145
+ throw new Error("Missing required property 'name'");
146
+ }
147
+ resourceInputs["assignments"] = args?.assignments;
148
+ resourceInputs["description"] = args?.description;
149
+ resourceInputs["enforcementMode"] = args?.enforcementMode;
150
+ resourceInputs["expectedHash"] = args?.expectedHash;
151
+ resourceInputs["framework"] = args?.framework;
152
+ resourceInputs["name"] = args?.name;
153
+ resourceInputs["rawPolicy"] = args?.rawPolicy ? pulumi.secret(args.rawPolicy) : undefined;
154
+ resourceInputs["s3Uri"] = args?.s3Uri;
155
+ resourceInputs["s3VersionId"] = args?.s3VersionId;
156
+ resourceInputs["sourceUri"] = args?.sourceUri;
157
+ resourceInputs["status"] = args?.status;
158
+ resourceInputs["createdAt"] = undefined /*out*/;
159
+ resourceInputs["createdBy"] = undefined /*out*/;
160
+ resourceInputs["policyHash"] = undefined /*out*/;
161
+ resourceInputs["resolvedVersion"] = undefined /*out*/;
162
+ resourceInputs["tenantId"] = undefined /*out*/;
163
+ resourceInputs["updatedAt"] = undefined /*out*/;
164
+ resourceInputs["version"] = undefined /*out*/;
165
+ }
166
+ opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts);
167
+ const secretOpts = { additionalSecretOutputs: ["rawPolicy"] };
168
+ opts = pulumi.mergeOptions(opts, secretOpts);
169
+ super(PolicyBundle.__pulumiType, name, resourceInputs, opts);
170
+ }
171
+ }
172
+
173
+ /**
174
+ * Input properties used for looking up and filtering PolicyBundle resources.
175
+ */
176
+ export interface PolicyBundleState {
177
+ /**
178
+ * Assignment targets (for example: all, agent:security-analyst-agent, coding-agent). Defaults to all.
179
+ */
180
+ assignments?: pulumi.Input<pulumi.Input<string>[] | undefined>;
181
+ /**
182
+ * Creation timestamp.
183
+ */
184
+ createdAt?: pulumi.Input<string | undefined>;
185
+ /**
186
+ * Creator identity.
187
+ */
188
+ createdBy?: pulumi.Input<string | undefined>;
189
+ /**
190
+ * Optional policy bundle description.
191
+ */
192
+ description?: pulumi.Input<string | undefined>;
193
+ /**
194
+ * Customer-facing policy mode: enforce or observe. Defaults to enforce.
195
+ */
196
+ enforcementMode?: pulumi.Input<string | undefined>;
197
+ /**
198
+ * Optional expected SHA-256 hash (hex or sha256:<hex>) to enforce policy integrity.
199
+ */
200
+ expectedHash?: pulumi.Input<string | undefined>;
201
+ /**
202
+ * Policy framework: OPA or CEDAR.
203
+ */
204
+ framework?: pulumi.Input<string | undefined>;
205
+ /**
206
+ * Stable bundle name. Updates create a new version for the same name.
207
+ */
208
+ name?: pulumi.Input<string | undefined>;
209
+ /**
210
+ * SHA-256 hash of policy content.
211
+ */
212
+ policyHash?: pulumi.Input<string | undefined>;
213
+ /**
214
+ * Raw Rego/Cedar policy payload. Set this or source_uri/s3_uri.
215
+ */
216
+ rawPolicy?: pulumi.Input<string | undefined>;
217
+ /**
218
+ * Resolved immutable source version (S3 version ID or file revision hint).
219
+ */
220
+ resolvedVersion?: pulumi.Input<string | undefined>;
221
+ /**
222
+ * Legacy S3 source URI (for example: s3://bucket/path/policy.rego). Set this or raw_policy. Prefer source_uri.
223
+ */
224
+ s3Uri?: pulumi.Input<string | undefined>;
225
+ /**
226
+ * Optional S3 object version ID to pin deterministic policy enforcement.
227
+ */
228
+ s3VersionId?: pulumi.Input<string | undefined>;
229
+ /**
230
+ * Unified policy source URI (file:// or s3://). Set this or raw_policy.
231
+ */
232
+ sourceUri?: pulumi.Input<string | undefined>;
233
+ /**
234
+ * Bundle lifecycle status: active, staged, paused, or disabled (alias of paused).
235
+ */
236
+ status?: pulumi.Input<string | undefined>;
237
+ /**
238
+ * Tenant ID from provider configuration.
239
+ */
240
+ tenantId?: pulumi.Input<string | undefined>;
241
+ /**
242
+ * Last update timestamp.
243
+ */
244
+ updatedAt?: pulumi.Input<string | undefined>;
245
+ /**
246
+ * Monotonic policy bundle version.
247
+ */
248
+ version?: pulumi.Input<number | undefined>;
249
+ }
250
+
251
+ /**
252
+ * The set of arguments for constructing a PolicyBundle resource.
253
+ */
254
+ export interface PolicyBundleArgs {
255
+ /**
256
+ * Assignment targets (for example: all, agent:security-analyst-agent, coding-agent). Defaults to all.
257
+ */
258
+ assignments?: pulumi.Input<pulumi.Input<string>[] | undefined>;
259
+ /**
260
+ * Optional policy bundle description.
261
+ */
262
+ description?: pulumi.Input<string | undefined>;
263
+ /**
264
+ * Customer-facing policy mode: enforce or observe. Defaults to enforce.
265
+ */
266
+ enforcementMode?: pulumi.Input<string | undefined>;
267
+ /**
268
+ * Optional expected SHA-256 hash (hex or sha256:<hex>) to enforce policy integrity.
269
+ */
270
+ expectedHash?: pulumi.Input<string | undefined>;
271
+ /**
272
+ * Policy framework: OPA or CEDAR.
273
+ */
274
+ framework: pulumi.Input<string>;
275
+ /**
276
+ * Stable bundle name. Updates create a new version for the same name.
277
+ */
278
+ name: pulumi.Input<string>;
279
+ /**
280
+ * Raw Rego/Cedar policy payload. Set this or source_uri/s3_uri.
281
+ */
282
+ rawPolicy?: pulumi.Input<string | undefined>;
283
+ /**
284
+ * Legacy S3 source URI (for example: s3://bucket/path/policy.rego). Set this or raw_policy. Prefer source_uri.
285
+ */
286
+ s3Uri?: pulumi.Input<string | undefined>;
287
+ /**
288
+ * Optional S3 object version ID to pin deterministic policy enforcement.
289
+ */
290
+ s3VersionId?: pulumi.Input<string | undefined>;
291
+ /**
292
+ * Unified policy source URI (file:// or s3://). Set this or raw_policy.
293
+ */
294
+ sourceUri?: pulumi.Input<string | undefined>;
295
+ /**
296
+ * Bundle lifecycle status: active, staged, paused, or disabled (alias of paused).
297
+ */
298
+ status?: pulumi.Input<string | undefined>;
299
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atensec/pulumi-thoth",
3
- "version": "0.1.5",
3
+ "version": "0.1.6",
4
4
  "description": "Pulumi provider for Aten Security Thoth AI governance control plane.",
5
5
  "keywords": [
6
6
  "pulumi",
package/tsconfig.json CHANGED
@@ -56,12 +56,16 @@
56
56
  "governance/getApprovals.ts",
57
57
  "governance/getCostReport.ts",
58
58
  "governance/getDay7Report.ts",
59
+ "governance/getEffectivePolicyBundles.ts",
59
60
  "governance/getEvidenceBundle.ts",
60
61
  "governance/getEvidenceChain.ts",
61
62
  "governance/getEvidenceSlos.ts",
62
63
  "governance/getEvidenceVerify.ts",
63
64
  "governance/getFeed.ts",
65
+ "governance/getPackRuleVersions.ts",
66
+ "governance/getPackRules.ts",
64
67
  "governance/getPacks.ts",
68
+ "governance/getPolicyBundles.ts",
65
69
  "governance/getReportsOverview.ts",
66
70
  "governance/getRuntimeStatus.ts",
67
71
  "governance/getTenantSettings.ts",
@@ -71,6 +75,7 @@
71
75
  "governance/packAssignment.ts",
72
76
  "governance/packAssignmentBulk.ts",
73
77
  "governance/pamSettings.ts",
78
+ "governance/policyBundle.ts",
74
79
  "governance/policySync.ts",
75
80
  "governance/siemSettings.ts",
76
81
  "governance/webhookSettings.ts",