Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Terraform] clarify docs around service account id #1054

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion build/terraform
2 changes: 1 addition & 1 deletion build/terraform-beta
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ resource "google_service_account" "test_account" {
}

resource "google_service_account_iam_binding" "foo" {
service_account_id = "${google_service_account.test_account.id}"
service_account_id = "${google_service_account.test_account.name}"
role = "roles/viewer"
members = ["serviceAccount:${google_service_account.test_account.email}"]
}
Expand All @@ -137,7 +137,7 @@ resource "google_service_account" "test_account" {
}

resource "google_service_account_iam_member" "foo" {
service_account_id = "${google_service_account.test_account.id}"
service_account_id = "${google_service_account.test_account.name}"
role = "roles/editor"
member = "serviceAccount:${google_service_account.test_account.email}"
}
Expand All @@ -160,7 +160,7 @@ data "google_iam_policy" "foo" {
}

resource "google_service_account_iam_policy" "foo" {
service_account_id = "${google_service_account.test_account.id}"
service_account_id = "${google_service_account.test_account.name}"
policy_data = "${data.google_iam_policy.foo.policy_data}"
}
`, account)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,10 @@ resource "google_service_account" "object_viewer" {

The following arguments are supported:

* `account_id` - (Required) The service account ID.
Changing this forces a new service account to be created.
* `account_id` - (Required) The account id that is used to generate the service
account email address and a stable unique id. It is unique within a project,
must be 6-30 characters long, and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])`
to comply with RFC1035. Changing this forces a new service account to be created.

* `display_name` - (Optional) The display name for the service account.
Can be updated without creating a new resource.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ description: |-

# IAM policy for service account

When managing IAM roles, you can treat a service account either as a resource or as an identity. This resource is to add iam policy bindings to a service account resource to configure permissions for who can edit the service account. To configure permissions for a service account to act as an identity that can manage other GCP resources, use the [google_project_iam](google_project_iam.html) set of resources.
When managing IAM roles, you can treat a service account either as a resource or as an identity. This resource is to add iam policy bindings to a service account resource **to configure permissions for who can edit the service account**. To configure permissions for a service account to act as an identity that can manage other GCP resources, use the [google_project_iam](google_project_iam.html) set of resources.

Three different resources help you manage your IAM policy for a service account. Each of these resources serves a different use case:

Expand All @@ -25,26 +25,37 @@ Three different resources help you manage your IAM policy for a service account.
```hcl
data "google_iam_policy" "admin" {
binding {
role = "roles/editor"
role = "roles/iam.serviceAccountUser"

members = [
"user:[email protected]",
]
}
}

resource "google_service_account" "sa" {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤦‍♀️ did we not have accounts in the examples yet

account_id = "my-service-account"
display_name = "A service account that only Jane can interact with"
}

resource "google_service_account_iam_policy" "admin-account-iam" {
service_account_id = "your-service-account-id"
service_account_id = "${google_service_account.sa.name}"
policy_data = "${data.google_iam_policy.admin.policy_data}"
}
```

## google\_service\_account\_iam\_binding

```hcl

resource "google_service_account" "sa" {
account_id = "my-service-account"
display_name = "A service account that only Jane can use"
}

resource "google_service_account_iam_binding" "admin-account-iam" {
service_account_id = "your-service-account-id"
role = "roles/editor"
service_account_id = "${google_service_account.sa.name}"
role = "roles/iam.serviceAccountUser"

members = [
"user:[email protected]",
Expand All @@ -55,18 +66,23 @@ resource "google_service_account_iam_binding" "admin-account-iam" {
## google\_service\_account\_iam\_member

```hcl
resource "google_service_account" "sa" {
account_id = "my-service-account"
display_name = "A service account that Jane can use"
}

resource "google_service_account_iam_member" "admin-account-iam" {
service_account_id = "your-service-account-id"
role = "roles/editor"
member = "user:[email protected]"
service_account_id = "${google_service_account.sa.name}"
role = "roles/iam.serviceAccountUser"
member = "user:[email protected]"
}
```

## Argument Reference

The following arguments are supported:

* `service_account_id` - (Required) The service account id to apply policy to.
* `service_account_id` - (Required) The fully-qualified name of the service account to apply policy to.

* `member/members` - (Required) Identities that will be granted the privilege in `role`.
Each entry can have one of the following values:
Expand Down