Skip to content

feat(sc-dbuser) add policy for sc-dbuser #3

Open
wants to merge 10 commits into
base: master
Choose a base branch
from
Open
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
16 changes: 8 additions & 8 deletions .tflint.hcl
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
config {
module = true
force = false
module = true
force = false
disabled_by_default = false

# ignore_module = {
# "terraform-aws-modules/vpc/aws" = true
# "terraform-aws-modules/security-group/aws" = true
# }
# ignore_module = {
# "terraform-aws-modules/vpc/aws" = true
# "terraform-aws-modules/security-group/aws" = true
# }

# varfile = ["example1.tfvars", "example2.tfvars"]
# variables = ["foo=bar", "bar=[\"baz\"]"]
# varfile = ["example1.tfvars", "example2.tfvars"]
# variables = ["foo=bar", "bar=[\"baz\"]"]
}

rule "aws_instance_invalid_type" {
Expand Down
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -93,3 +93,7 @@
* 1.7.1 -- 2026-03-26
- updated policies/sc-developer
- add kms:UpdateKeyDescription

* 1.7.2 -- 2026-04-07
- created policies
- policies/sc-dbuser
25 changes: 25 additions & 0 deletions policies/sc-dbuser/.terraform.lock.hcl

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

44 changes: 44 additions & 0 deletions policies/sc-dbuser/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
## Requirements

| Name | Version |
|------|---------|
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.12 |
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 6.0 |

## Providers

| Name | Version |
|------|---------|
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 6.0 |

## Modules

No modules.

## Resources

| Name | Type |
|------|------|
| [aws_arn.current](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/arn) | data source |
| [aws_caller_identity.current](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/caller_identity) | data source |
| [aws_iam_policy_document.inline](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document) | data source |
| [aws_region.current](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/region) | data source |

## Inputs

| Name | Description | Type | Default | Required |
|------|-------------|------|---------|:--------:|
| <a name="input_account_alias"></a> [account\_alias](#input\_account\_alias) | AWS Account Alias | `string` | `""` | no |
| <a name="input_account_id"></a> [account\_id](#input\_account\_id) | AWS Account ID (default will pull from current user) | `string` | `""` | no |
| <a name="input_override_prefixes"></a> [override\_prefixes](#input\_override\_prefixes) | Override built-in prefixes by component. This should be used primarily for common infrastructure things | `map(string)` | `{}` | no |
| <a name="input_tags"></a> [tags](#input\_tags) | AWS Tags to apply to appropriate resources | `map(string)` | `{}` | no |

## Outputs

| Name | Description |
|------|-------------|
| <a name="output_customer_managed_policy_names"></a> [customer\_managed\_policy\_names](#output\_customer\_managed\_policy\_names) | Map of policy name to permission boundary of Customer Managed Policy to attach to the permissionset |
| <a name="output_inline_policy"></a> [inline\_policy](#output\_inline\_policy) | AWS Policy document for the single allowed inline policy (use .json to get policy) |
| <a name="output_managed_policy_names"></a> [managed\_policy\_names](#output\_managed\_policy\_names) | Names of AWS Managed Policy to attach to the permissionset |
| <a name="output_name"></a> [name](#output\_name) | Permission Set Name for which all settings apply |
| <a name="output_relay_state"></a> [relay\_state](#output\_relay\_state) | Relay State to pass along to permissionset |
3 changes: 3 additions & 0 deletions policies/sc-dbuser/base_arn.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
locals {
all_account_arn_iam = format("arn:%v:%v::%v:%%v", data.aws_arn.current.partition, "iam", "*")
}
1 change: 1 addition & 0 deletions policies/sc-dbuser/data.tf
1 change: 1 addition & 0 deletions policies/sc-dbuser/defaults.tf
12 changes: 12 additions & 0 deletions policies/sc-dbuser/locals.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
locals {
account_id = var.account_id != "" ? var.account_id : data.aws_caller_identity.current.account_id
account_environment = data.aws_arn.current.partition == "aws-us-gov" ? "gov" : "ew"
region = data.aws_region.current.region
region_short = join("", [for c in split("-", local.region) : substr(c, 0, 1)])

base_tags = {
"boc:tf_module_version" = local._module_version
"boc:tf_module_name" = local._module_name
"boc:created_by" = "terraform"
}
}
2 changes: 2 additions & 0 deletions policies/sc-dbuser/main.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
/*
*/
3 changes: 3 additions & 0 deletions policies/sc-dbuser/module_name.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
locals {
_module_name = "aws-sso/policies/sc-dbuser"
}
24 changes: 24 additions & 0 deletions policies/sc-dbuser/outputs.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
output "name" {
description = "Permission Set Name for which all settings apply"
value = local.name
}

output "managed_policy_names" {
description = "Names of AWS Managed Policy to attach to the permissionset"
value = local.managed_policy_names
}

output "customer_managed_policy_names" {
description = "Map of policy name to permission boundary of Customer Managed Policy to attach to the permissionset"
value = local.customer_managed_policy_names
}

output "inline_policy" {
description = "AWS Policy document for the single allowed inline policy (use .json to get policy)"
value = local.inline_policy
}

output "relay_state" {
description = "Relay State to pass along to permissionset"
value = local.relay_state
}
18 changes: 18 additions & 0 deletions policies/sc-dbuser/policy.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
data "aws_iam_policy_document" "inline" {
statement {
sid = "AllowRDSDB"
effect = "Allow"
resources = ["*"]
actions = [
"rds-db:connect",
"rds:DescribeDBInstances",
"rds:DescribeDBClusters",
"rds:DescribeDBInstancesPerformance",
"rds:DescribeDBClustersPerformance",
"pi:DescribeDimensionKeys",
"pi:GetResourceMetrics",
"pi:ListAvailableResourceDimensions",
"pi:ListAvailableResourceMetrics"
]
}
}
1 change: 1 addition & 0 deletions policies/sc-dbuser/prefixes.tf
10 changes: 10 additions & 0 deletions policies/sc-dbuser/settings.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
locals {
name = "sc-dbuser"
description = "System Common DB User"
managed_policy_names = [
"ReadOnlyAccess",
]
customer_managed_policy_names = {}
relay_state = null
inline_policy = data.aws_iam_policy_document.inline
}
1 change: 1 addition & 0 deletions policies/sc-dbuser/variables.common.tf
29 changes: 29 additions & 0 deletions policies/sc-dbuser/variables.tf.unused
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
variable "name" {
description = "Permission Set Name for which all settings apply"
type = string
default = null
}

variable "managed_policy_names" {
description = "Names of AWS Managed Policy to attach to the permissionset"
type = list(string)
default = []
}

variable "customer_managed_policy_names" {
description = "Map of policy name to permission boundary of Customer Managed Policy to attach to the permissionset"
type = map(string)
default = {}
}

# variable "inline_policy" {
# description = "AWS Policy document for the single allowed inline policy"
# type = string
# default = null
# }

variable "relay_state" {
description = "Relay State to pass along to permissionset"
type = string
default = null
}
1 change: 1 addition & 0 deletions policies/sc-dbuser/version.tf
1 change: 1 addition & 0 deletions policies/sc-dbuser/versions.tf