Skip to content

Commit 2f6d313

Browse files
camiekimgericdong
andauthored
docs: Add CMEK for Eventarc (#827)
* docs: Create main.tf Per b/404495162 * docs: Support generation of Eventarc SA * doc: Use email attribute instead of member for google_project_service_identity --------- Co-authored-by: Eric Dong <[email protected]>
1 parent 9a791ee commit 2f6d313

File tree

1 file changed

+79
-0
lines changed

1 file changed

+79
-0
lines changed

eventarc/use_cmek/main.tf

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
/**
2+
* Copyright 2025 Google LLC
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
# [START eventarc_terraform_cmek_apis]
18+
# Enable Cloud KMS API
19+
resource "google_project_service" "cloudkms" {
20+
service = "cloudkms.googleapis.com"
21+
disable_on_destroy = false
22+
}
23+
24+
# Enable Eventarc API
25+
resource "google_project_service" "eventarc" {
26+
service = "eventarc.googleapis.com"
27+
disable_on_destroy = false
28+
}
29+
# [END eventarc_terraform_cmek_apis]
30+
31+
# Used to retrieve project information later
32+
data "google_project" "default" {
33+
}
34+
35+
# [START eventarc_terraform_service_agent]
36+
resource "google_project_service_identity" "eventarc_sa" {
37+
provider = google-beta
38+
project = data.google_project.default.project_id
39+
service = "eventarc.googleapis.com"
40+
}
41+
# [END eventarc_terraform_service_agent]
42+
43+
# [START eventarc_terraform_cmek_key]
44+
resource "random_id" "default" {
45+
byte_length = 8
46+
}
47+
48+
# Create a Cloud KMS key ring
49+
resource "google_kms_key_ring" "default" {
50+
name = "${random_id.default.hex}-example-keyring"
51+
location = "us-central1"
52+
}
53+
54+
# Create a Cloud KMS key
55+
resource "google_kms_crypto_key" "default" {
56+
name = "example-key"
57+
key_ring = google_kms_key_ring.default.id
58+
rotation_period = "7776000s"
59+
}
60+
# [END eventarc_terraform_cmek_key]
61+
62+
# [START eventarc_terraform_cmek_role]
63+
# Grant service account access to Cloud KMS key
64+
resource "google_kms_crypto_key_iam_member" "default" {
65+
crypto_key_id = google_kms_crypto_key.default.id
66+
role = "roles/cloudkms.cryptoKeyEncrypterDecrypter"
67+
member = "serviceAccount:${google_project_service_identity.eventarc_sa.email}"
68+
}
69+
# [END eventarc_terraform_cmek_role]
70+
71+
# [START eventarc_terraform_cmek_google_channel]
72+
# Specify a CMEK key for the `GoogleChannelConfig` resource
73+
resource "google_eventarc_google_channel_config" "default" {
74+
location = "us-central1"
75+
name = "googleChannelConfig"
76+
crypto_key_name = google_kms_crypto_key.default.id
77+
depends_on = [google_kms_crypto_key_iam_member.default]
78+
}
79+
# [END eventarc_terraform_cmek_google_channel]

0 commit comments

Comments
 (0)