<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="binaryauthorization_v1beta1.html">Binary Authorization API</a> . <a href="binaryauthorization_v1beta1.systempolicy.html">systempolicy</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#getPolicy">getPolicy(name, x__xgafv=None)</a></code></p>
<p class="firstline">Gets the current system policy in the specified location.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="getPolicy">getPolicy(name, x__xgafv=None)</code>
  <pre>Gets the current system policy in the specified location.

Args:
  name: string, Required. The resource name, in the format `locations/*/policy`. Note that the system policy is not associated with a project. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A policy for Binary Authorization.
  &quot;admissionWhitelistPatterns&quot;: [ # 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.
    { # An admission allowlist pattern exempts images from checks by admission rules.
      &quot;namePattern&quot;: &quot;A String&quot;, # 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`.
    },
  ],
  &quot;clusterAdmissionRules&quot;: { # 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.
    &quot;a_key&quot;: { # 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.
      &quot;enforcementMode&quot;: &quot;A String&quot;, # Required. The action when a pod creation is denied by the admission rule.
      &quot;evaluationMode&quot;: &quot;A String&quot;, # Required. How this admission rule will be evaluated.
      &quot;requireAttestationsBy&quot;: [ # 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.
        &quot;A String&quot;,
      ],
    },
  },
  &quot;defaultAdmissionRule&quot;: { # 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. # Required. Default admission rule for a cluster without a per-cluster, per- kubernetes-service-account, or per-istio-service-identity admission rule.
    &quot;enforcementMode&quot;: &quot;A String&quot;, # Required. The action when a pod creation is denied by the admission rule.
    &quot;evaluationMode&quot;: &quot;A String&quot;, # Required. How this admission rule will be evaluated.
    &quot;requireAttestationsBy&quot;: [ # 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.
      &quot;A String&quot;,
    ],
  },
  &quot;description&quot;: &quot;A String&quot;, # Optional. A descriptive comment.
  &quot;etag&quot;: &quot;A String&quot;, # Optional. Used to prevent updating the policy when another request has updated it since it was retrieved.
  &quot;globalPolicyEvaluationMode&quot;: &quot;A String&quot;, # 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.
  &quot;istioServiceIdentityAdmissionRules&quot;: { # Optional. Per-istio-service-identity admission rules. Istio service identity spec format: `spiffe:///ns//sa/` or `/ns//sa/` e.g. `spiffe://example.com/ns/test-ns/sa/default`
    &quot;a_key&quot;: { # 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.
      &quot;enforcementMode&quot;: &quot;A String&quot;, # Required. The action when a pod creation is denied by the admission rule.
      &quot;evaluationMode&quot;: &quot;A String&quot;, # Required. How this admission rule will be evaluated.
      &quot;requireAttestationsBy&quot;: [ # 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.
        &quot;A String&quot;,
      ],
    },
  },
  &quot;kubernetesNamespaceAdmissionRules&quot;: { # Optional. Per-kubernetes-namespace admission rules. K8s namespace spec format: `[a-z.-]+`, e.g. `some-namespace`
    &quot;a_key&quot;: { # 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.
      &quot;enforcementMode&quot;: &quot;A String&quot;, # Required. The action when a pod creation is denied by the admission rule.
      &quot;evaluationMode&quot;: &quot;A String&quot;, # Required. How this admission rule will be evaluated.
      &quot;requireAttestationsBy&quot;: [ # 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.
        &quot;A String&quot;,
      ],
    },
  },
  &quot;kubernetesServiceAccountAdmissionRules&quot;: { # Optional. Per-kubernetes-service-account admission rules. Service account spec format: `namespace:serviceaccount`. e.g. `test-ns:default`
    &quot;a_key&quot;: { # 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.
      &quot;enforcementMode&quot;: &quot;A String&quot;, # Required. The action when a pod creation is denied by the admission rule.
      &quot;evaluationMode&quot;: &quot;A String&quot;, # Required. How this admission rule will be evaluated.
      &quot;requireAttestationsBy&quot;: [ # 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.
        &quot;A String&quot;,
      ],
    },
  },
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name, in the format `projects/*/policy`. There is at most one policy per project.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Time when the policy was last updated.
}</pre>
</div>

</body></html>