Package google.cloud.binaryauthorization.v1beta1

Index

BinauthzManagementServiceV1Beta1

Google Cloud Management Service for Binary Authorization admission policies and attestation authorities.

This API implements a REST model with the following objects:

CreateAttestor

rpc CreateAttestor(CreateAttestorRequest) returns (Attestor)

Creates an attestor, and returns a copy of the new attestor. Returns NOT_FOUND if the project does not exist, INVALID_ARGUMENT if the request is malformed, ALREADY_EXISTS if the attestor already exists.

Authorization scopes

Requires the following OAuth scope:

  • https://www.googleapis.com/auth/cloud-platform

For more information, see the Authentication Overview.

DeleteAttestor

rpc DeleteAttestor(DeleteAttestorRequest) returns (Empty)

Deletes an attestor. Returns NOT_FOUND if the attestor does not exist.

Authorization scopes

Requires the following OAuth scope:

  • https://www.googleapis.com/auth/cloud-platform

For more information, see the Authentication Overview.

GetAttestor

rpc GetAttestor(GetAttestorRequest) returns (Attestor)

Gets an attestor. Returns NOT_FOUND if the attestor does not exist.

Authorization scopes

Requires the following OAuth scope:

  • https://www.googleapis.com/auth/cloud-platform

For more information, see the Authentication Overview.

GetPolicy

rpc GetPolicy(GetPolicyRequest) returns (Policy)

A policy specifies the attestors that must attest to a container image, before the project is allowed to deploy that image. There is at most one policy per project. All image admission requests are permitted if a project has no policy.

Gets the policy for this project. Returns a default policy if the project does not have one.

Authorization scopes

Requires the following OAuth scope:

  • https://www.googleapis.com/auth/cloud-platform

For more information, see the Authentication Overview.

ListAttestors

rpc ListAttestors(ListAttestorsRequest) returns (ListAttestorsResponse)

Lists attestors. Returns INVALID_ARGUMENT if the project does not exist.

Authorization scopes

Requires the following OAuth scope:

  • https://www.googleapis.com/auth/cloud-platform

For more information, see the Authentication Overview.

UpdateAttestor

rpc UpdateAttestor(UpdateAttestorRequest) returns (Attestor)

Updates an attestor. Returns NOT_FOUND if the attestor does not exist.

Authorization scopes

Requires the following OAuth scope:

  • https://www.googleapis.com/auth/cloud-platform

For more information, see the Authentication Overview.

UpdatePolicy

rpc UpdatePolicy(UpdatePolicyRequest) returns (Policy)

Creates or updates a project's policy, and returns a copy of the new policy. A policy is always updated as a whole, to avoid race conditions with concurrent policy enforcement (or management!) requests. Returns NOT_FOUND if the project does not exist, INVALID_ARGUMENT if the request is malformed.

Authorization scopes

Requires the following OAuth scope:

  • https://www.googleapis.com/auth/cloud-platform

For more information, see the Authentication Overview.

SystemPolicyV1Beta1

API for working with the system policy.

GetSystemPolicy

rpc GetSystemPolicy(GetSystemPolicyRequest) returns (Policy)

Gets the current system policy in the specified location.

Authorization scopes

Requires the following OAuth scope:

  • https://www.googleapis.com/auth/cloud-platform

For more information, see the Authentication Overview.

AdmissionRule

An admission rule specifies either that all container images used in a pod creation request must be attested to by one or more attestors, that all pod creations will be allowed, or that all pod creations will be denied.

Images matching an admission allowlist pattern are exempted from admission rules and will never block a pod creation.

Fields
evaluation_mode

EvaluationMode

Required. How this admission rule will be evaluated.

require_attestations_by[]

string

Optional. The resource names of the attestors that must attest to a container image, in the format projects/*/attestors/*. Each attestor must exist before a policy can reference it. To add an attestor to a policy the principal issuing the policy change request must be able to read the attestor resource.

Note: this field must be non-empty when the evaluation_mode field specifies REQUIRE_ATTESTATION, otherwise it must be empty.

enforcement_mode

EnforcementMode

Required. The action when a pod creation is denied by the admission rule.

EnforcementMode

Defines the possible actions when a pod creation is denied by an admission rule.

Enums
ENFORCEMENT_MODE_UNSPECIFIED Do not use.
ENFORCED_BLOCK_AND_AUDIT_LOG Enforce the admission rule by blocking the pod creation.
DRYRUN_AUDIT_LOG_ONLY Dryrun mode: Audit logging only. This will allow the pod creation as if the admission request had specified break-glass.

EvaluationMode

Enums
EVALUATION_MODE_UNSPECIFIED Do not use.
ALWAYS_ALLOW This rule allows all all pod creations.
REQUIRE_ATTESTATION This rule allows a pod creation if all the attestors listed in require_attestations_by have valid attestations for all of the images in the pod spec.
ALWAYS_DENY This rule denies all pod creations.

AdmissionWhitelistPattern

An admission allowlist pattern exempts images from checks by admission rules.

Fields
name_pattern

string

An image name pattern to allowlist, in the form registry/path/to/image. This supports a trailing * as a wildcard, but this is allowed only in text after the registry/ part. * wildcard does not match /, i.e., gcr.io/nginx* matches gcr.io/nginx@latest, but it does not match gcr.io/nginx/image. This also supports a trailing ** wildcard which matches subdirectories, i.e., gcr.io/nginx** matches gcr.io/nginx/image.

Attestor

An attestor that attests to container image artifacts. An existing attestor cannot be modified except where indicated.

Fields
name

string

Required. The resource name, in the format: projects/*/attestors/*. This field may not be updated.

description

string

Optional. A descriptive comment. This field may be updated. The field may be displayed in chooser dialogs.

update_time

Timestamp

Output only. Time when the attestor was last updated.

etag

string

Optional. A checksum, returned by the server, that can be sent on update requests to ensure the attestor has an up-to-date value before attempting to update it. See https://google.aip.dev/154.

Union field attestor_type. Required. Identifies an attestor that attests to a container image artifact. This determines how an attestation will be stored, and how it will be used during policy enforcement. Updates may not change the attestor type, but individual attestor fields may be updated. attestor_type can be only one of the following:
user_owned_drydock_note

UserOwnedDrydockNote

A Drydock ATTESTATION_AUTHORITY Note, created by the user.

AttestorPublicKey

An attestor public key that will be used to verify attestations signed by this attestor.

Fields
comment

string

Optional. A descriptive comment. This field may be updated.

id

string

The ID of this public key. Signatures verified by BinAuthz must include the ID of the public key that can be used to verify them, and that ID must match the contents of this field exactly. Additional restrictions on this field can be imposed based on which public key type is encapsulated. See the documentation on public_key cases below for details.

Union field public_key. Required. A public key reference or serialized instance. This field may be updated. public_key can be only one of the following:
ascii_armored_pgp_public_key

string

ASCII-armored representation of a PGP public key, as the entire output by the command gpg --export --armor foo@example.com (either LF or CRLF line endings). When using this field, id should be left blank. The BinAuthz API handlers will calculate the ID and fill it in automatically. BinAuthz computes this ID as the OpenPGP RFC4880 V4 fingerprint, represented as upper-case hex. If id is provided by the caller, it will be overwritten by the API-calculated ID.

pkix_public_key

PkixPublicKey

A raw PKIX SubjectPublicKeyInfo format public key.

NOTE: id may be explicitly provided by the caller when using this type of public key, but it MUST be a valid RFC3986 URI. If id is left blank, a default one will be computed based on the digest of the DER encoding of the public key.

CreateAttestorRequest

Request message for [BinauthzManagementService.CreateAttestor][].

Fields
parent

string

Required. The parent of this attestor.

Authorization requires the following IAM permission on the specified resource parent:

  • binaryauthorization.attestors.create
attestor_id

string

Required. The attestors ID.

attestor

Attestor

Required. The initial attestor value. The service will overwrite the attestor name field with the resource name, in the format projects/*/attestors/*.

DeleteAttestorRequest

Request message for [BinauthzManagementService.DeleteAttestor][].

Fields
name

string

Required. The name of the attestors to delete, in the format projects/*/attestors/*.

Authorization requires the following IAM permission on the specified resource name:

  • binaryauthorization.attestors.delete

GetAttestorRequest

Request message for [BinauthzManagementService.GetAttestor][].

Fields
name

string

Required. The name of the attestor to retrieve, in the format projects/*/attestors/*.

Authorization requires the following IAM permission on the specified resource name:

  • binaryauthorization.attestors.get

GetPolicyRequest

Request message for [BinauthzManagementService.GetPolicy][].

Fields
name

string

Required. The resource name of the policy to retrieve, in the format projects/*/policy.

Authorization requires the following IAM permission on the specified resource name:

  • binaryauthorization.policy.get

GetSystemPolicyRequest

Request to read the current system policy.

Fields
name

string

Required. The resource name, in the format locations/*/policy. Note that the system policy is not associated with a project.

ListAttestorsRequest

Request message for [BinauthzManagementService.ListAttestors][].

Fields
parent

string

Required. The resource name of the project associated with the attestors, in the format projects/*.

Authorization requires the following IAM permission on the specified resource parent:

  • binaryauthorization.attestors.list
page_size

int32

Requested page size. The server may return fewer results than requested. If unspecified, the server will pick an appropriate default.

page_token

string

A token identifying a page of results the server should return. Typically, this is the value of ListAttestorsResponse.next_page_token returned from the previous call to the ListAttestors method.

ListAttestorsResponse

Response message for [BinauthzManagementService.ListAttestors][].

Fields
attestors[]

Attestor

The list of attestors.

next_page_token

string

A token to retrieve the next page of results. Pass this value in the ListAttestorsRequest.page_token field in the subsequent call to the ListAttestors method to retrieve the next page of results.

PkixPublicKey

A public key in the PkixPublicKey format (see https://tools.ietf.org/html/rfc5280#section-4.1.2.7 for details). Public keys of this type are typically textually encoded using the PEM format.

Fields
public_key_pem

string

A PEM-encoded public key, as described in https://tools.ietf.org/html/rfc7468#section-13

signature_algorithm

SignatureAlgorithm

The signature algorithm used to verify a message against a signature using this key. These signature algorithm must match the structure and any object identifiers encoded in public_key_pem (i.e. this algorithm must match that of the public key).

SignatureAlgorithm

Represents a signature algorithm and other information necessary to verify signatures with a given public key. This is based primarily on the public key types supported by Tink's PemKeyType, which is in turn based on KMS's supported signing algorithms. See https://cloud.google.com/kms/docs/algorithms. In the future, BinAuthz might support additional public key types independently of Tink and/or KMS.

Enums
SIGNATURE_ALGORITHM_UNSPECIFIED Not specified.
RSA_PSS_2048_SHA256 RSASSA-PSS 2048 bit key with a SHA256 digest.
RSA_SIGN_PSS_2048_SHA256 RSASSA-PSS 2048 bit key with a SHA256 digest.
RSA_PSS_3072_SHA256 RSASSA-PSS 3072 bit key with a SHA256 digest.
RSA_SIGN_PSS_3072_SHA256 RSASSA-PSS 3072 bit key with a SHA256 digest.
RSA_PSS_4096_SHA256 RSASSA-PSS 4096 bit key with a SHA256 digest.
RSA_SIGN_PSS_4096_SHA256 RSASSA-PSS 4096 bit key with a SHA256 digest.
RSA_PSS_4096_SHA512 RSASSA-PSS 4096 bit key with a SHA512 digest.
RSA_SIGN_PSS_4096_SHA512 RSASSA-PSS 4096 bit key with a SHA512 digest.
RSA_SIGN_PKCS1_2048_SHA256 RSASSA-PKCS1-v1_5 with a 2048 bit key and a SHA256 digest.
RSA_SIGN_PKCS1_3072_SHA256 RSASSA-PKCS1-v1_5 with a 3072 bit key and a SHA256 digest.
RSA_SIGN_PKCS1_4096_SHA256 RSASSA-PKCS1-v1_5 with a 4096 bit key and a SHA256 digest.
RSA_SIGN_PKCS1_4096_SHA512 RSASSA-PKCS1-v1_5 with a 4096 bit key and a SHA512 digest.
ECDSA_P256_SHA256 ECDSA on the NIST P-256 curve with a SHA256 digest.
EC_SIGN_P256_SHA256 ECDSA on the NIST P-256 curve with a SHA256 digest.
ECDSA_P384_SHA384 ECDSA on the NIST P-384 curve with a SHA384 digest.
EC_SIGN_P384_SHA384 ECDSA on the NIST P-384 curve with a SHA384 digest.
ECDSA_P521_SHA512 ECDSA on the NIST P-521 curve with a SHA512 digest.
EC_SIGN_P521_SHA512 ECDSA on the NIST P-521 curve with a SHA512 digest.

Policy

A policy for Binary Authorization.

Fields
name

string

Output only. The resource name, in the format projects/*/policy. There is at most one policy per project.

description

string

Optional. A descriptive comment.

global_policy_evaluation_mode

GlobalPolicyEvaluationMode

Optional. Controls the evaluation of a Google-maintained global admission policy for common system-level images. Images not covered by the global policy will be subject to the project admission policy. This setting has no effect when specified inside a global admission policy.

admission_whitelist_patterns[]

AdmissionWhitelistPattern

Optional. Admission policy allowlisting. A matching admission request will always be permitted. This feature is typically used to exclude Google or third-party infrastructure images from Binary Authorization policies.

cluster_admission_rules

map<string, AdmissionRule>

Optional. Per-cluster admission rules. Cluster spec format: location.clusterId. There can be at most one admission rule per cluster spec. A location is either a compute zone (e.g. us-central1-a) or a region (e.g. us-central1). For clusterId syntax restrictions see https://cloud.google.com/container-engine/reference/rest/v1/projects.zones.clusters.

kubernetes_namespace_admission_rules

map<string, AdmissionRule>

Optional. Per-kubernetes-namespace admission rules. K8s namespace spec format: [a-z.-]+, e.g. some-namespace

kubernetes_service_account_admission_rules

map<string, AdmissionRule>

Optional. Per-kubernetes-service-account admission rules. Service account spec format: namespace:serviceaccount. e.g. test-ns:default

istio_service_identity_admission_rules

map<string, AdmissionRule>

Optional. Per-istio-service-identity admission rules. Istio service identity spec format: spiffe://<domain>/ns/<namespace>/sa/<serviceaccount> or <domain>/ns/<namespace>/sa/<serviceaccount> e.g. spiffe://example.com/ns/test-ns/sa/default

default_admission_rule

AdmissionRule

Required. Default admission rule for a cluster without a per-cluster, per- kubernetes-service-account, or per-istio-service-identity admission rule.

update_time

Timestamp

Output only. Time when the policy was last updated.

etag

string

Optional. A checksum, returned by the server, that can be sent on update requests to ensure the policy has an up-to-date value before attempting to update it. See https://google.aip.dev/154.

GlobalPolicyEvaluationMode

Enums
GLOBAL_POLICY_EVALUATION_MODE_UNSPECIFIED Not specified: DISABLE is assumed.
ENABLE Enables system policy evaluation.
DISABLE Disables system policy evaluation.

UpdateAttestorRequest

Request message for [BinauthzManagementService.UpdateAttestor][].

Fields
attestor

Attestor

Required. The updated attestor value. The service will overwrite the attestor name field with the resource name in the request URL, in the format projects/*/attestors/*.

Authorization requires the following IAM permission on the specified resource attestor:

  • binaryauthorization.attestors.update

UpdatePolicyRequest

Request message for [BinauthzManagementService.UpdatePolicy][].

Fields
policy

Policy

Required. A new or updated policy value. The service will overwrite the policy name field with the resource name in the request URL, in the format projects/*/policy.

Authorization requires the following IAM permission on the specified resource policy:

  • binaryauthorization.policy.update

UserOwnedDrydockNote

An user owned drydock note references a Drydock ATTESTATION_AUTHORITY Note created by the user.

Fields
note_reference

string

Required. The Drydock resource name of a ATTESTATION_AUTHORITY Note, created by the user, in the format: projects/*/notes/* (or the legacy providers/*/notes/*). This field may not be updated.

An attestation by this attestor is stored as a Drydock ATTESTATION_AUTHORITY Occurrence that names a container image and that links to this Note. Drydock is an external dependency.

public_keys[]

AttestorPublicKey

Optional. Public keys that verify attestations signed by this attestor. This field may be updated.

If this field is non-empty, one of the specified public keys must verify that an attestation was signed by this attestor for the image specified in the admission request.

If this field is empty, this attestor always returns that no valid attestations exist.

delegation_service_account_email

string

Output only. This field will contain the service account email address that this Attestor will use as the principal when querying Container Analysis. Attestor administrators must grant this service account the IAM role needed to read attestations from the [note_reference][Note] in Container Analysis (containeranalysis.notes.occurrences.viewer).

This email address is fixed for the lifetime of the Attestor, but callers should not make any other assumptions about the service account email; future versions may use an email based on a different naming pattern.