4-projects/modules/composer_env/iam.roles.tf (293 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. */ resource "google_service_account_iam_member" "custom_service_account" { provider = google-beta service_account_id = google_service_account.composer.id role = "roles/composer.ServiceAgentV2Ext" member = "serviceAccount:service-${module.app_cloudbuild_project.project_number}@cloudcomposer-accounts.iam.gserviceaccount.com" } resource "google_project_iam_custom_role" "composer-sa-gcs" { project = module.app_cloudbuild_project.project_id role_id = "composerServiceAccountGCS" title = "Composer Service Account Cloud Storage" description = "Provides access to cloud storage for Cloud Composer service accounts" permissions = [ # Storage Object Admin "resourcemanager.projects.get", "storage.objects.create", "storage.objects.delete", "storage.objects.get", "storage.objects.getIamPolicy", "storage.objects.list", "storage.objects.update", ] } resource "google_project_iam_custom_role" "composer-sa-bq" { project = module.app_cloudbuild_project.project_id role_id = "composerServiceAccountBQ" title = "Composer Service Account BigQuery" description = "Provides access to BigQuery for Cloud Composer service accounts" permissions = [ # BigQuery Data Editor "bigquery.datasets.create", "bigquery.datasets.get", "bigquery.datasets.getIamPolicy", "bigquery.datasets.updateTag", "bigquery.models.create", "bigquery.models.delete", "bigquery.models.export", "bigquery.models.getData", "bigquery.models.getMetadata", "bigquery.models.list", "bigquery.models.updateData", "bigquery.models.updateMetadata", "bigquery.models.updateTag", "bigquery.routines.create", "bigquery.routines.delete", "bigquery.routines.get", "bigquery.routines.list", "bigquery.routines.update", "bigquery.routines.updateTag", "bigquery.tables.create", "bigquery.tables.createSnapshot", "bigquery.tables.delete", "bigquery.tables.export", "bigquery.tables.get", "bigquery.tables.getData", "bigquery.tables.getIamPolicy", "bigquery.tables.list", "bigquery.tables.restoreSnapshot", "bigquery.tables.update", "bigquery.tables.updateData", "bigquery.tables.updateTag", "resourcemanager.projects.get", "bigquery.jobs.create" ] } resource "google_project_iam_custom_role" "composer-sa-vertex" { project = module.app_cloudbuild_project.project_id role_id = "composerServiceAccountVertex" title = "Composer Service Account Vertex AI" description = "Provides access to Vertex for Cloud Composer service accounts" permissions = [ # Vertex AI User "aiplatform.annotations.create", "aiplatform.annotations.delete", "aiplatform.annotations.get", "aiplatform.annotations.list", "aiplatform.annotations.update", "aiplatform.annotationSpecs.create", "aiplatform.annotationSpecs.delete", "aiplatform.annotationSpecs.get", "aiplatform.annotationSpecs.list", "aiplatform.annotationSpecs.update", "aiplatform.artifacts.create", "aiplatform.artifacts.delete", "aiplatform.artifacts.get", "aiplatform.artifacts.list", "aiplatform.artifacts.update", "aiplatform.batchPredictionJobs.cancel", "aiplatform.batchPredictionJobs.create", "aiplatform.batchPredictionJobs.delete", "aiplatform.batchPredictionJobs.get", "aiplatform.batchPredictionJobs.list", "aiplatform.contexts.addContextArtifactsAndExecutions", "aiplatform.contexts.addContextChildren", "aiplatform.contexts.create", "aiplatform.contexts.delete", "aiplatform.contexts.get", "aiplatform.contexts.list", "aiplatform.contexts.queryContextLineageSubgraph", "aiplatform.contexts.update", "aiplatform.customJobs.cancel", "aiplatform.customJobs.create", "aiplatform.customJobs.delete", "aiplatform.customJobs.get", "aiplatform.customJobs.list", "aiplatform.dataItems.create", "aiplatform.dataItems.delete", "aiplatform.dataItems.get", "aiplatform.dataItems.list", "aiplatform.dataItems.update", "aiplatform.dataLabelingJobs.cancel", "aiplatform.dataLabelingJobs.create", "aiplatform.dataLabelingJobs.delete", "aiplatform.dataLabelingJobs.get", "aiplatform.dataLabelingJobs.list", "aiplatform.datasets.create", "aiplatform.datasets.delete", "aiplatform.datasets.export", "aiplatform.datasets.get", "aiplatform.datasets.import", "aiplatform.datasets.list", "aiplatform.datasets.update", "aiplatform.edgeDeploymentJobs.create", "aiplatform.edgeDeploymentJobs.delete", "aiplatform.edgeDeploymentJobs.get", "aiplatform.edgeDeploymentJobs.list", "aiplatform.edgeDeviceDebugInfo.get", "aiplatform.edgeDevices.create", "aiplatform.edgeDevices.delete", "aiplatform.edgeDevices.get", "aiplatform.edgeDevices.list", "aiplatform.edgeDevices.update", "aiplatform.endpoints.create", "aiplatform.endpoints.delete", "aiplatform.endpoints.deploy", "aiplatform.endpoints.explain", "aiplatform.endpoints.get", "aiplatform.endpoints.list", "aiplatform.endpoints.predict", "aiplatform.endpoints.undeploy", "aiplatform.endpoints.update", "aiplatform.entityTypes.create", "aiplatform.entityTypes.delete", "aiplatform.entityTypes.exportFeatureValues", "aiplatform.entityTypes.get", "aiplatform.entityTypes.importFeatureValues", "aiplatform.entityTypes.list", "aiplatform.entityTypes.readFeatureValues", "aiplatform.entityTypes.streamingReadFeatureValues", "aiplatform.entityTypes.update", "aiplatform.entityTypes.writeFeatureValues", "aiplatform.executions.addExecutionEvents", "aiplatform.executions.create", "aiplatform.executions.delete", "aiplatform.executions.get", "aiplatform.executions.list", "aiplatform.executions.queryExecutionInputsAndOutputs", "aiplatform.executions.update", "aiplatform.features.create", "aiplatform.features.delete", "aiplatform.features.get", "aiplatform.features.list", "aiplatform.features.update", "aiplatform.featurestores.batchReadFeatureValues", "aiplatform.featurestores.create", "aiplatform.featurestores.delete", "aiplatform.featurestores.exportFeatures", "aiplatform.featurestores.get", "aiplatform.featurestores.importFeatures", "aiplatform.featurestores.list", "aiplatform.featurestores.readFeatures", "aiplatform.featurestores.update", "aiplatform.featurestores.writeFeatures", "aiplatform.humanInTheLoops.create", "aiplatform.humanInTheLoops.delete", "aiplatform.humanInTheLoops.get", "aiplatform.humanInTheLoops.list", "aiplatform.humanInTheLoops.send", "aiplatform.humanInTheLoops.update", "aiplatform.hyperparameterTuningJobs.cancel", "aiplatform.hyperparameterTuningJobs.create", "aiplatform.hyperparameterTuningJobs.delete", "aiplatform.hyperparameterTuningJobs.get", "aiplatform.hyperparameterTuningJobs.list", "aiplatform.indexEndpoints.create", "aiplatform.indexEndpoints.delete", "aiplatform.indexEndpoints.deploy", "aiplatform.indexEndpoints.get", "aiplatform.indexEndpoints.list", "aiplatform.indexEndpoints.undeploy", "aiplatform.indexEndpoints.update", "aiplatform.indexes.create", "aiplatform.indexes.delete", "aiplatform.indexes.get", "aiplatform.indexes.list", "aiplatform.indexes.update", "aiplatform.locations.get", "aiplatform.locations.list", "aiplatform.metadataSchemas.create", "aiplatform.metadataSchemas.delete", "aiplatform.metadataSchemas.get", "aiplatform.metadataSchemas.list", "aiplatform.metadataStores.create", "aiplatform.metadataStores.delete", "aiplatform.metadataStores.get", "aiplatform.metadataStores.list", "aiplatform.modelDeploymentMonitoringJobs.create", "aiplatform.modelDeploymentMonitoringJobs.delete", "aiplatform.modelDeploymentMonitoringJobs.get", "aiplatform.modelDeploymentMonitoringJobs.list", "aiplatform.modelDeploymentMonitoringJobs.pause", "aiplatform.modelDeploymentMonitoringJobs.resume", "aiplatform.modelDeploymentMonitoringJobs.searchStatsAnomalies", "aiplatform.modelDeploymentMonitoringJobs.update", "aiplatform.modelEvaluations.exportEvaluatedDataItems", "aiplatform.modelEvaluations.get", "aiplatform.modelEvaluations.list", "aiplatform.modelEvaluationSlices.get", "aiplatform.modelEvaluationSlices.list", "aiplatform.models.delete", "aiplatform.models.export", "aiplatform.models.get", "aiplatform.models.list", "aiplatform.models.update", "aiplatform.models.upload", "aiplatform.nasJobs.cancel", "aiplatform.nasJobs.create", "aiplatform.nasJobs.delete", "aiplatform.nasJobs.get", "aiplatform.nasJobs.list", "aiplatform.operations.list", "aiplatform.pipelineJobs.cancel", "aiplatform.pipelineJobs.create", "aiplatform.pipelineJobs.delete", "aiplatform.pipelineJobs.get", "aiplatform.pipelineJobs.list", "aiplatform.specialistPools.create", "aiplatform.specialistPools.delete", "aiplatform.specialistPools.get", "aiplatform.specialistPools.list", "aiplatform.specialistPools.update", "aiplatform.studies.create", "aiplatform.studies.delete", "aiplatform.studies.get", "aiplatform.studies.list", "aiplatform.studies.update", "aiplatform.tensorboardExperiments.create", "aiplatform.tensorboardExperiments.delete", "aiplatform.tensorboardExperiments.get", "aiplatform.tensorboardExperiments.list", "aiplatform.tensorboardExperiments.update", "aiplatform.tensorboardExperiments.write", "aiplatform.tensorboardRuns.create", "aiplatform.tensorboardRuns.delete", "aiplatform.tensorboardRuns.get", "aiplatform.tensorboardRuns.list", "aiplatform.tensorboardRuns.update", "aiplatform.tensorboardRuns.write", "aiplatform.tensorboards.create", "aiplatform.tensorboards.delete", "aiplatform.tensorboards.get", "aiplatform.tensorboards.list", "aiplatform.tensorboards.update", "aiplatform.tensorboardTimeSeries.create", "aiplatform.tensorboardTimeSeries.delete", "aiplatform.tensorboardTimeSeries.get", "aiplatform.tensorboardTimeSeries.list", "aiplatform.tensorboardTimeSeries.read", "aiplatform.tensorboardTimeSeries.update", "aiplatform.trainingPipelines.cancel", "aiplatform.trainingPipelines.create", "aiplatform.trainingPipelines.delete", "aiplatform.trainingPipelines.get", "aiplatform.trainingPipelines.list", "aiplatform.trials.create", "aiplatform.trials.delete", "aiplatform.trials.get", "aiplatform.trials.list", "aiplatform.trials.update", "resourcemanager.projects.get", ] }