github.com/mineiros-io/terradoc@v0.0.9-0.20220711062319-018bd4ae81f5/test/testdata/golden-readme.md (about) 1 [<img src="https://raw.githubusercontent.com/mineiros-io/brand/3bffd30e8bdbbde32c143e2650b2faa55f1df3ea/mineiros-primary-logo.svg" width="400"/>](https://mineiros.io/?ref=terraform-google-secret-manager-iam) 2 3 [](https://github.com/hashicorp/terraform/releases) 4 [](https://github.com/terraform-providers/terraform-provider-google/releases) 5 [](https://mineiros.io/slack) 6 7 # terraform-google-secret-manager-iam 8 9 A [Terraform](https://www.terraform.io) module to create a [Google Secret Manager IAM](https://cloud.google.com/secret-manager/docs/access-control) on [Google Cloud Services (GCP)](https://cloud.google.com/). 10 11 **_This module supports Terraform version 1 12 and is compatible with the Terraform Google Provider version 3._** 13 14 This module is part of our Infrastructure as Code (IaC) framework 15 that enables our users and customers to easily deploy and manage reusable, 16 secure, and production-grade cloud infrastructure. 17 18 19 - [Module Features](#module-features) 20 - [Getting Started](#getting-started) 21 - [Module Argument Reference](#module-argument-reference) 22 - [Top-level Arguments](#top-level-arguments) 23 - [Module Configuration](#module-configuration) 24 - [Main Resource Configuration](#main-resource-configuration) 25 - [Extended Resource Configuration](#extended-resource-configuration) 26 - [Module Attributes Reference](#module-attributes-reference) 27 - [External Documentation](#external-documentation) 28 - [Google Documentation](#google-documentation) 29 - [Terraform Google Provider Documentation](#terraform-google-provider-documentation) 30 - [Module Versioning](#module-versioning) 31 - [Backwards compatibility in `0.0.z` and `0.y.z` version](#backwards-compatibility-in-00z-and-0yz-version) 32 - [About Mineiros](#about-mineiros) 33 - [Reporting Issues](#reporting-issues) 34 - [Contributing](#contributing) 35 - [Makefile Targets](#makefile-targets) 36 - [License](#license) 37 38 ## Module Features 39 40 This module implements the following terraform resources: 41 42 - `google_secret_manager_secret_iam_binding` 43 - `google_secret_manager_secret_iam_member` 44 - `google_secret_manager_secret_iam_policy` 45 46 ## Getting Started 47 48 Most basic usage just setting required arguments: 49 50 ```hcl 51 module "terraform-google-secret-manager-iam" { 52 source = "github.com/mineiros-io/terraform-google-secret-manager-iam.git?ref=v0.1.0" 53 54 secret_id = google_secret_manager_secret.secret-basic.secret_id 55 role = "roles/secretmanager.secretAccessor" 56 members = ["user:admin@example.com"] 57 } 58 ``` 59 60 ## Module Argument Reference 61 62 See [variables.tf] and [examples/] for details and use-cases. 63 64 ### Top-level Arguments 65 66 #### Module Configuration 67 68 - [**`module_enabled`**](#var-module_enabled): *(Optional `bool`)*<a name="var-module_enabled"></a> 69 70 Specifies whether resources in the module will be created. 71 72 Default is `true`. 73 74 - [**`module_depends_on`**](#var-module_depends_on): *(Optional `list(dependencies)`)*<a name="var-module_depends_on"></a> 75 76 A list of dependencies. Any object can be _assigned_ to this list to define a hidden external dependency. 77 78 Example: 79 80 ```hcl 81 module_depends_on = [ 82 google_network.network 83 ] 84 ``` 85 86 #### Main Resource Configuration 87 88 - [**`secret_id`**](#var-secret_id): *(**Required** `string`)*<a name="var-secret_id"></a> 89 90 The id of the secret. 91 92 - [**`members`**](#var-members): *(Optional `set(string)`)*<a name="var-members"></a> 93 94 Identities that will be granted the privilege in role. Each entry can have one of the following values: 95 - `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. 96 - `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. 97 - `user:{emailid}`: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com. 98 - `serviceAccount:{emailid}`: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. 99 - `group:{emailid}`: An email address that represents a Google group. For example, admins@example.com. 100 - `domain:{domain}`: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com. 101 - `projectOwner:projectid`: Owners of the given project. For example, `projectOwner:my-example-project` 102 - `projectEditor:projectid`: Editors of the given project. For example, `projectEditor:my-example-project` 103 - `projectViewer:projectid`: Viewers of the given project. For example, `projectViewer:my-example-project` 104 105 Default is `[]`. 106 107 - [**`role`**](#var-role): *(Optional `string`)*<a name="var-role"></a> 108 109 The role that should be applied. Note that custom roles must be of the format `[projects|organizations]/{parent-name}/roles/{role-name}`. 110 111 - [**`project`**](#var-project): *(Optional `string`)*<a name="var-project"></a> 112 113 The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. 114 115 - [**`authoritative`**](#var-authoritative): *(Optional `bool`)*<a name="var-authoritative"></a> 116 117 Whether to exclusively set (authoritative mode) or add (non-authoritative/additive mode) members to the role. 118 119 Default is `true`. 120 121 - [**`policy_bindings`**](#var-policy_bindings): *(Optional `list(policy_bindings)`)*<a name="var-policy_bindings"></a> 122 123 A list of IAM policy bindings. 124 125 Example: 126 127 ```hcl 128 policy_bindings = [{ 129 role = "roles/secretmanager.secretAccessor" 130 members = ["user:member@example.com"] 131 }] 132 ``` 133 134 Each `policy_bindings` object in the list accepts the following attributes: 135 136 - [**`role`**](#attr-policy_bindings-role): *(**Required** `string`)*<a name="attr-policy_bindings-role"></a> 137 138 The role that should be applied. 139 140 - [**`members`**](#attr-policy_bindings-members): *(Optional `set(string)`)*<a name="attr-policy_bindings-members"></a> 141 142 Identities that will be granted the privilege in `role`. 143 144 Default is `var.members`. 145 146 - [**`condition`**](#attr-policy_bindings-condition): *(Optional `object(condition)`)*<a name="attr-policy_bindings-condition"></a> 147 148 An IAM Condition for a given binding. 149 150 Example: 151 152 ```hcl 153 condition = { 154 expression = "request.time < timestamp(\"2022-01-01T00:00:00Z\")" 155 title = "expires_after_2021_12_31" 156 } 157 ``` 158 159 The `condition` object accepts the following attributes: 160 161 - [**`expression`**](#attr-policy_bindings-condition-expression): *(**Required** `string`)*<a name="attr-policy_bindings-condition-expression"></a> 162 163 Textual representation of an expression in Common Expression Language syntax. 164 165 - [**`title`**](#attr-policy_bindings-condition-title): *(**Required** `string`)*<a name="attr-policy_bindings-condition-title"></a> 166 167 A title for the expression, i.e. a short string describing its purpose. 168 169 - [**`description`**](#attr-policy_bindings-condition-description): *(Optional `string`)*<a name="attr-policy_bindings-condition-description"></a> 170 171 An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI. 172 173 #### Extended Resource Configuration 174 175 ## Module Attributes Reference 176 177 The following attributes are exported in the outputs of the module: 178 179 - [**`module_enabled`**](#output-module_enabled): *(`bool`)*<a name="output-module_enabled"></a> 180 181 Whether this module is enabled. 182 183 - [**`iam`**](#output-iam): *(`object(iam_output)`)*<a name="output-iam"></a> 184 185 All attributes of the created `iam_binding` or `iam_member` or `iam_policy` resource according to the mode. 186 187 ## External Documentation 188 189 ### Google Documentation 190 191 - Secret Manager: <https://cloud.google.com/secret-manager/docs> 192 - Secret Manager Access Control: <https://cloud.google.com/secret-manager/docs/access-control> 193 194 ### Terraform Google Provider Documentation 195 196 - <https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/secret_manager_secret> 197 - <https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/secret_manager_secret_iam> 198 199 ## Module Versioning 200 201 This Module follows the principles of [Semantic Versioning (SemVer)]. 202 203 Given a version number `MAJOR.MINOR.PATCH`, we increment the: 204 205 1. `MAJOR` version when we make incompatible changes, 206 2. `MINOR` version when we add functionality in a backwards compatible manner, and 207 3. `PATCH` version when we make backwards compatible bug fixes. 208 209 ### Backwards compatibility in `0.0.z` and `0.y.z` version 210 211 - Backwards compatibility in versions `0.0.z` is **not guaranteed** when `z` is increased. (Initial development) 212 - Backwards compatibility in versions `0.y.z` is **not guaranteed** when `y` is increased. (Pre-release) 213 214 ## About Mineiros 215 216 [Mineiros][homepage] is a remote-first company headquartered in Berlin, Germany 217 that solves development, automation and security challenges in cloud infrastructure. 218 219 Our vision is to massively reduce time and overhead for teams to manage and 220 deploy production-grade and secure cloud infrastructure. 221 222 We offer commercial support for all of our modules and encourage you to reach out 223 if you have any questions or need help. Feel free to email us at [hello@mineiros.io] or join our 224 [Community Slack channel][slack]. 225 226 ## Reporting Issues 227 228 We use GitHub [Issues] to track community reported issues and missing features. 229 230 ## Contributing 231 232 Contributions are always encouraged and welcome! For the process of accepting changes, we use 233 [Pull Requests]. If you'd like more information, please see our [Contribution Guidelines]. 234 235 ## Makefile Targets 236 237 This repository comes with a handy [Makefile]. 238 Run `make help` to see details on each available target. 239 240 ## License 241 242 [![license][badge-license]][apache20] 243 244 This module is licensed under the Apache License Version 2.0, January 2004. 245 Please see [LICENSE] for full details. 246 247 Copyright © 2020-2021 [Mineiros GmbH][homepage] 248 249 250 <!-- References --> 251 252 [homepage]: https://mineiros.io/?ref=terraform-google-secret-manager-iam 253 [hello@mineiros.io]: mailto:hello@mineiros.io 254 [badge-build]: https://github.com/mineiros-io/terraform-google-secret-manager-iam/workflows/Tests/badge.svg 255 [badge-semver]: https://img.shields.io/github/v/tag/mineiros-io/terraform-google-secret-manager-iam.svg?label=latest&sort=semver 256 [badge-license]: https://img.shields.io/badge/license-Apache%202.0-brightgreen.svg 257 [badge-terraform]: https://img.shields.io/badge/Terraform-1.x-623CE4.svg?logo=terraform 258 [badge-slack]: https://img.shields.io/badge/slack-@mineiros--community-f32752.svg?logo=slack 259 [build-status]: https://github.com/mineiros-io/terraform-google-secret-manager-iam/actions 260 [releases-github]: https://github.com/mineiros-io/erraform-google-secret-manager-iam/releases 261 [releases-terraform]: https://github.com/hashicorp/terraform/releases 262 [badge-tf-gcp]: https://img.shields.io/badge/google-3.x-1A73E8.svg?logo=terraform 263 [releases-google-provider]: https://github.com/terraform-providers/terraform-provider-google/releases 264 [apache20]: https://opensource.org/licenses/Apache-2.0 265 [slack]: https://mineiros.io/slack 266 [terraform]: https://www.terraform.io 267 [gcp]: https://cloud.google.com/ 268 [semantic versioning (semver)]: https://semver.org/ 269 [variables.tf]: https://github.com/mineiros-io/terraform-google-secret-manager-iam/blob/main/variables.tf 270 [examples/]: https://github.com/mineiros-io/terraform-google-secret-manager-iam/blob/main/examples 271 [issues]: https://github.com/mineiros-io/terraform-google-secret-manager-iam/issues 272 [license]: https://github.com/mineiros-io/terraform-google-secret-manager-iam/blob/main/LICENSE 273 [makefile]: https://github.com/mineiros-io/terraform-google-secret-manager-iam/blob/main/Makefile 274 [pull requests]: https://github.com/mineiros-io/terraform-google-secret-manager-iam/pulls 275 [contribution guidelines]: https://github.com/mineiros-io/terraform-google-secret-manager-iam/blob/main/CONTRIBUTING.md