solutions/core-landing-zone/lz-folder/audits/logging-project/project-iam.yaml (95 lines of code) (raw):

# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. ###### # Logs Bucket writer IAM permissions for security log sink # Binds the service account dynamically created with the LoggingLogSink to the required role to write to the bucket # AC-1 - Implementation of access control # AC-3, AU-9 - IAM Policies that assign the dynamically created service account with the LoggingLogSink to the logging bucket writer role and storage admin role on the storage bucket apiVersion: iam.cnrm.cloud.google.com/v1beta1 kind: IAMPartialPolicy metadata: name: security-log-bucket-writer-permissions namespace: projects annotations: config.kubernetes.io/depends-on: resourcemanager.cnrm.cloud.google.com/namespaces/projects/Project/${logging-project-id} # kpt-set: resourcemanager.cnrm.cloud.google.com/namespaces/projects/Project/${logging-project-id} spec: resourceRef: kind: Project name: logging-project-id # kpt-set: ${logging-project-id} namespace: projects # AC-1, AC-3, AU-9 bindings: - role: roles/logging.bucketWriter members: - memberFrom: logSinkRef: name: org-log-sink-security-logging-project-id # kpt-set: org-log-sink-security-${logging-project-id} namespace: logging --- # Logs Bucket writer IAM permissions for the platform and component log sinks # Binds the service account dynamically created with the LoggingLogSink to the required role to write to the bucket apiVersion: iam.cnrm.cloud.google.com/v1beta1 kind: IAMPartialPolicy metadata: name: platform-and-component-services-log-bucket-writer-permissions namespace: projects annotations: config.kubernetes.io/depends-on: resourcemanager.cnrm.cloud.google.com/namespaces/projects/Project/${logging-project-id} # kpt-set: resourcemanager.cnrm.cloud.google.com/namespaces/projects/Project/${logging-project-id} spec: resourceRef: kind: Project name: logging-project-id # kpt-set: ${logging-project-id} namespace: projects # AC-1, AC-3, AU-9 bindings: - role: roles/logging.bucketWriter members: - memberFrom: logSinkRef: name: platform-and-component-services-log-sink namespace: logging --- # Logs Bucket writer IAM permissions for the platform and component services log sinks # Binds the service account dynamically created with the LoggingLogSink to the required role to write to the bucket apiVersion: iam.cnrm.cloud.google.com/v1beta1 kind: IAMPartialPolicy metadata: name: platform-and-component-services-infra-log-bucket-writer-permissions namespace: projects annotations: config.kubernetes.io/depends-on: resourcemanager.cnrm.cloud.google.com/namespaces/projects/Project/${logging-project-id} # kpt-set: resourcemanager.cnrm.cloud.google.com/namespaces/projects/Project/${logging-project-id} spec: resourceRef: kind: Project name: logging-project-id # kpt-set: ${logging-project-id} namespace: projects # AC-1, AC-3, AU-9 bindings: - role: roles/logging.bucketWriter members: - memberFrom: logSinkRef: name: platform-and-component-services-infra-log-sink namespace: logging --- # Logs Bucket writer IAM permissions for the platform and component log sink # Binds the service account dynamically created with the LoggingLogSink to the required role to write to the bucket apiVersion: iam.cnrm.cloud.google.com/v1beta1 kind: IAMPartialPolicy metadata: name: mgmt-project-cluster-platform-and-component-log-bucket-writer-permissions namespace: projects annotations: config.kubernetes.io/depends-on: resourcemanager.cnrm.cloud.google.com/namespaces/projects/Project/${logging-project-id} # kpt-set: resourcemanager.cnrm.cloud.google.com/namespaces/projects/Project/${logging-project-id} spec: resourceRef: kind: Project name: logging-project-id # kpt-set: ${logging-project-id} namespace: projects # AC-1, AC-3, AU-9 bindings: - role: roles/logging.bucketWriter members: - memberFrom: logSinkRef: name: mgmt-project-cluster-platform-and-component-log-sink namespace: logging --- # Enable data access log configuration on the logging project apiVersion: iam.cnrm.cloud.google.com/v1beta1 kind: IAMAuditConfig metadata: name: logging-project-data-access-log-config namespace: projects annotations: config.kubernetes.io/depends-on: resourcemanager.cnrm.cloud.google.com/namespaces/projects/Project/${logging-project-id} # kpt-set: resourcemanager.cnrm.cloud.google.com/namespaces/projects/Project/${logging-project-id} spec: service: allServices # AU-9, AC-3 auditLogConfigs: - logType: DATA_READ resourceRef: kind: Project name: logging-project-id # kpt-set: ${logging-project-id} namespace: projects