From f1f439da945987ecd1c937428c357ce797ef6df0 Mon Sep 17 00:00:00 2001 From: Razvan Cosma <75040720+razvan-moj@users.noreply.github.com> Date: Thu, 21 Jul 2022 21:42:21 +0300 Subject: [PATCH] add RDS policy (#3) * RDS policy --- README.md | 3 +++ rds.tf | 44 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 rds.tf diff --git a/README.md b/README.md index d71b8e3..02d1e9b 100644 --- a/README.md +++ b/README.md @@ -39,12 +39,14 @@ No modules. | [auth0_rule.saml_mappings](https://registry.terraform.io/providers/auth0/auth0/latest/docs/resources/rule) | resource | | [auth0_rule_config.aws_saml_provider_name](https://registry.terraform.io/providers/auth0/auth0/latest/docs/resources/rule_config) | resource | | [aws_iam_policy.iam_for_github](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_policy) | resource | +| [aws_iam_policy.rds_for_github](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_policy) | resource | | [aws_iam_policy.s3_for_github](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_policy) | resource | | [aws_iam_policy.sns_for_github](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_policy) | resource | | [aws_iam_policy.sqs_for_github](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_policy) | resource | | [aws_iam_policy.vpc_for_github](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_policy) | resource | | [aws_iam_role.github_access](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role) | resource | | [aws_iam_role_policy_attachment.iam_for_github](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role_policy_attachment) | resource | +| [aws_iam_role_policy_attachment.rds_for_github](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role_policy_attachment) | resource | | [aws_iam_role_policy_attachment.s3_for_github](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role_policy_attachment) | resource | | [aws_iam_role_policy_attachment.sns_for_github](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role_policy_attachment) | resource | | [aws_iam_role_policy_attachment.sqs_for_github](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role_policy_attachment) | resource | @@ -54,6 +56,7 @@ No modules. | [aws_iam_account_alias.current](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_account_alias) | data source | | [aws_iam_policy_document.federated_role_trust_policy](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document) | data source | | [aws_iam_policy_document.iam_for_github](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document) | data source | +| [aws_iam_policy_document.rds_for_github](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document) | data source | | [aws_iam_policy_document.s3_for_github](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document) | data source | | [aws_iam_policy_document.sns_for_github](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document) | data source | | [aws_iam_policy_document.sqs_for_github](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document) | data source | diff --git a/rds.tf b/rds.tf new file mode 100644 index 0000000..2ad4795 --- /dev/null +++ b/rds.tf @@ -0,0 +1,44 @@ +data "aws_iam_policy_document" "rds_for_github" { + + statement { + sid = "AllowListDescribe" + effect = "Allow" + actions = [ + "rds:Describe*", + "rds:ListTagsForResource", + ] + resources = ["*"] + } + + statement { + sid = "AllowGetOwn" + effect = "Allow" + actions = [ + "rds:CreateDBSnapshot", + "rds:DownloadCompleteDBLogFile", + "rds:DownloadDBLogFilePortion", + "rds:ModifyDBInstance", + "rds:RebootDBInstance" + ] + resources = ["*"] + condition { + test = "StringLike" + variable = "aws:PrincipalTag/GithubTeam" + values = ["*:$${aws:ResourceTag/GithubTeam}:*"] + } + } + +} + +resource "aws_iam_policy" "rds_for_github" { + policy = data.aws_iam_policy_document.rds_for_github.json + name = "rds-for-github" + tags = { + GithubTeam = "webops" + } +} + +resource "aws_iam_role_policy_attachment" "rds_for_github" { + role = aws_iam_role.github_access.name + policy_arn = aws_iam_policy.rds_for_github.arn +}