- Python: Update
grpcio
dependency to match thepulumi
package (#361).
- Python: Indicate that the PyPi package doesn't have an associated Pulumi plugin (#358).
-
Fix panic when a stack policy with a "remediate" level reports a violation (#339).
-
Node.js: Upgrade to
@grpc/grpc-js
1.10.1 and remove calls to deprecatedserver.start
(#343).
- Python: Update
grpcio
dependency to match thepulumi
package (#335).
- Explicitly convert gRPC port number to string to prevent node output colorization (#319).
- Add support for policy remediations (#314).
- Bump
protobufjs
to the latest 7.x major version. Addresses CVE-2023-36665 (#313).
- Bump
protobufjs
to the latest 6.x minor version. Addresses CVE-2022-25878 (#308).
- Python: Workaround regression introduced by use of ContextVars in the Pulumi Python SDK (#288).
- Update @grpc/grpc-js dependency to 1.2.7 (#270).
- Upgrade project to use Pulumi v3 (#266).
-
Increase the MaxCallRecvMsgSize for all RPC calls (#239).
-
Add Python support for policy configuration (#246).
- Replace
grpc
with@grpc/grpc-js
and upgrade dependencies to 2.0 (#235).
- Remove deprecated
validateTypedResource
helper. UsevalidateResourceOfType
instead. (#227).
-
Expose options, parent, dependencies, and provider config (#184).
-
Fix issue that prevented async policies from failing as expected when using
validateResourceOfType
orvalidateStackResourcesOfType
(#202). -
Added a top-level optional
enforcementLevel
onPolicyPackArgs
and madeenforcementLevel
onPolicy
optional. This allows setting the enforcement level at the Policy Pack level which will apply to all policies. Individual policies can set their ownenforcementLevel
to override the value specified for the Policy Pack. If no enforcement level is specified for either the Policy Pack or Policy,"advisory"
is used. (#192). -
Add support for configuring policies. Policies can now declare their config schema by setting the
config
property, and access config values viaargs.getConfig<T>()
(#207).Example:
{ name: "certificate-expiration", description: "Checks whether a certificate has expired.", configSchema: { properties: { expiration: { type: "integer", default: 14, }, }, }, validateResource: (args, reportViolation) => { const { expiration } = args.getConfig<{ expiration: number }>(); // ... }), }
-
Add support for writing policies in Python 🎉 (#212).
Example:
def s3_no_public_read(args: ResourceValidationArgs, report_violation: ReportViolation): if args.resource_type == "aws:s3/bucket:Bucket" and "acl" in args.props: acl = args.props["acl"] if acl == "public-read" or acl == "public-read-write": report_violation("You cannot set public-read or public-read-write on an S3 bucket.") PolicyPack( name="aws-policy-pack", enforcement_level=EnforcementLevel.MANDATORY, policies=[ ResourceValidationPolicy( name="s3-no-public-read", description="Prohibits setting the publicRead or publicReadWrite permission on AWS S3 buckets.", validate=s3_no_public_read, ), ], )
-
Add support for using
Config
,getProject()
,getStack()
, andisDryRun()
from Policy Packs via upgraded dependency on@pulumi/pulumi
v1.8.0 (requires v1.8.0 or later of the Pulumi SDK) (#169). -
Provide easier type checking for
validateStack
, along withisType
andasType
helper functions (#173).Example:
{ validateStack: validateStackResourcesOfType(aws.s3.Bucket, (buckets, args, reportViolation) => { for (const bucket of buckets) { // ... } }), }
-
validateTypedResource
is now deprecated in favor ofvalidateResourceOfType
.validateTypedResource
will be removed in an upcoming version. (#173). -
Attempting to access an unknown property value during previews from a stack validation callback now results in an advisory violation like what happens when doing the same from a resource validation callback (#180).
- Add
"disabled"
toEnforcementLevel
to disable policies (#156). - Add resource
urn
andname
properties along with support for reporting the URN associated with a stack validation policy violation (#151).
-
API changes to enable new types of policies (i.e. validating all resource in a stack) and passing additional information to validation functions (#131).
Policy.rules
is nowResourceValidationPolicy.validateResource
.typedRule
is nowvalidateTypedResource
.- Policy violations are now reported through a
reportViolation
callback, rather than using asserts. - A new
StackValidationPolicy
policy type is available for defining policies that check all resources in a stack. - Validation functions can now be async and return
Promise<void>
.
Example:
new PolicyPack("aws-policy-pack", { policies: [{ name: "s3-no-public-read", description: "Prohibits setting the publicRead or publicReadWrite permission on AWS S3 buckets.", enforcementLevel: "mandatory", validateResource: validateTypedResource(aws.s3.Bucket, (bucket, args, reportViolation) => { if (bucket.acl === "public-read" || bucket.acl === "public-read-write") { reportViolation( "You cannot set public-read or public-read-write on an S3 bucket. " + "Read more about ACLs here: https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html"); } }), }], });
-
Allow policies to deal with Pulumi secret values (#115).
- Make policy violation error messages two lines (#95).
- Fix polarity issue in policy violation reports (#95).
- Add initial Policy server.