{"id":13541770,"url":"https://github.com/salesforce/terraform-provider-policyguru","last_synced_at":"2025-04-15T23:31:28.703Z","repository":{"id":39284787,"uuid":"321753227","full_name":"salesforce/terraform-provider-policyguru","owner":"salesforce","description":"Terraform provider for Policy Sentry (IAM least privilege generator and auditor)","archived":false,"fork":false,"pushed_at":"2023-09-07T08:37:14.000Z","size":15559,"stargazers_count":30,"open_issues_count":5,"forks_count":8,"subscribers_count":6,"default_branch":"main","last_synced_at":"2024-08-01T10:16:03.559Z","etag":null,"topics":["aws","aws-security","cloud","cloudsecurity","hacktoberfest","iam","salesforce","security"],"latest_commit_sha":null,"homepage":"https://registry.terraform.io/providers/salesforce/policyguru","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/salesforce.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":"SECURITY.md","support":null,"governance":null}},"created_at":"2020-12-15T18:23:00.000Z","updated_at":"2024-05-08T17:32:51.000Z","dependencies_parsed_at":"2023-09-24T16:57:09.167Z","dependency_job_id":null,"html_url":"https://github.com/salesforce/terraform-provider-policyguru","commit_stats":{"total_commits":137,"total_committers":7,"mean_commits":"19.571428571428573","dds":0.1021897810218978,"last_synced_commit":"0f7c9d68516f3f3bf3f87f3eb6cff8af510162bf"},"previous_names":[],"tags_count":41,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/salesforce%2Fterraform-provider-policyguru","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/salesforce%2Fterraform-provider-policyguru/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/salesforce%2Fterraform-provider-policyguru/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/salesforce%2Fterraform-provider-policyguru/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/salesforce","download_url":"https://codeload.github.com/salesforce/terraform-provider-policyguru/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":222818707,"owners_count":17042228,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws","aws-security","cloud","cloudsecurity","hacktoberfest","iam","salesforce","security"],"created_at":"2024-08-01T10:00:56.810Z","updated_at":"2024-11-08T13:19:32.252Z","avatar_url":"https://github.com/salesforce.png","language":"Go","funding_links":[],"categories":["Projects"],"sub_categories":["Identity and Access Management"],"readme":"\n\n# terraform-provider-policyguru\n\n[![continuous-integration](https://github.com/salesforce/terraform-provider-policyguru/workflows/continuous-integration/badge.svg)](https://github.com/salesforce/terraform-provider-policyguru/actions?query=workflow%3Acontinuous-integration)\n[![Go Report Card](https://goreportcard.com/badge/github.com/salesforce/terraform-provider-policyguru)](https://goreportcard.com/report/github.com/salesforce/terraform-provider-policyguru)\n\nThis is the Terraform Provider for [Policy Sentry](https://github.com/salesforce/policy_sentry/) - the IAM Least Privilege Policy Generator.\n\nWe have Policy Sentry hosted as a REST API and this Terraform provider points to the REST API. \n\n**Using this Terraform provider, you can write Least Privilege IAM Policies without ever leaving your code editor!**\n\n## Requirements\n\n* This requires Terraform `\u003e= v0.13.0`\n\n## Example\n\nConsider the following example Terraform code:\n\n```hcl\nterraform {\n  required_providers {\n    policyguru = {\n      source  = \"salesforce/policyguru\"\n      version = \"2.0.4\"\n    }\n    aws = {\n      source  = \"hashicorp/aws\"\n      version = \"~\u003e 3.0\"\n    }\n  }\n}\n\n# Configure the AWS Provider\nprovider \"aws\" {\n  region = \"us-east-1\"\n}\n\n# This creates the policy document.\ndata \"policyguru_document\" \"example\" {\n  actions_for_resources_at_access_level {\n    write = list(\"arn:aws:kms:us-east-1:123456789012:key/aaaa-bbbb-cccc\")\n    read = list(\"arn:aws:s3:::mybucket/*\")\n  }\n\n  actions_for_service_without_resource_constraint_support {\n    include_single_actions = [\"ssm:GetParameter\"]\n  }\n  exclude_actions = list(\"kms:Decrypt*\", \"kms:Delete*\", \"kms:Disable\", \"kms:Schedule*\")\n}\n\n# This creates an IAM Policy leveraging policyguru\nresource \"aws_iam_policy\" \"policy\" {\n  name        = \"policyguru-example\"\n  path        = \"/\"\n  description = \"this uses the policyguru document data source\"\n  policy      = data.policyguru_document.example.json\n}\n\n# This shows you the output value\noutput \"policy_document_json\" {\n  value = data.policyguru_document.example.json\n}\n```\n\nThat will create an IAM Policy titled `policyguru-example` which will contain the following policy:\n\n```json\n{\n    \"Version\": \"2012-10-17\",\n    \"Statement\": [\n        {\n            \"Sid\": \"S3ReadObject\",\n            \"Effect\": \"Allow\",\n            \"Action\": [\n                \"s3:GetObject\",\n                \"s3:GetObjectAcl\",\n                \"s3:GetObjectLegalHold\",\n                \"s3:GetObjectRetention\",\n                \"s3:GetObjectTagging\",\n                \"s3:GetObjectTorrent\",\n                \"s3:GetObjectVersion\",\n                \"s3:GetObjectVersionAcl\",\n                \"s3:GetObjectVersionForReplication\",\n                \"s3:GetObjectVersionTagging\",\n                \"s3:GetObjectVersionTorrent\"\n            ],\n            \"Resource\": [\n                \"arn:aws:s3:::mybucket/*\"\n            ]\n        },\n        {\n            \"Sid\": \"KmsWriteKey\",\n            \"Effect\": \"Allow\",\n            \"Action\": [\n                \"kms:CancelKeyDeletion\",\n                \"kms:CreateAlias\",\n                \"kms:DisableKey\",\n                \"kms:DisableKeyRotation\",\n                \"kms:EnableKey\",\n                \"kms:EnableKeyRotation\",\n                \"kms:Encrypt\",\n                \"kms:GenerateDataKey\",\n                \"kms:GenerateDataKeyPair\",\n                \"kms:GenerateDataKeyPairWithoutPlaintext\",\n                \"kms:GenerateDataKeyWithoutPlaintext\",\n                \"kms:ImportKeyMaterial\",\n                \"kms:ReEncryptFrom\",\n                \"kms:ReEncryptTo\",\n                \"kms:Sign\",\n                \"kms:UpdateAlias\",\n                \"kms:UpdateKeyDescription\",\n                \"kms:Verify\"\n            ],\n            \"Resource\": [\n                \"arn:aws:kms:us-east-1:123456789012:key/aaaa-bbbb-cccc\"\n            ]\n        },\n        {\n            \"Sid\": \"SkipResourceConstraints\",\n            \"Effect\": \"Allow\",\n            \"Action\": [\n                \"ssm:GetParameter\"\n            ],\n            \"Resource\": [\n                \"*\"\n            ]\n        }\n    ]\n}\n```\n\n\n## Contributing\n\nCommand             |      Description\n--------------------| --------------------\n```make build ```         | Build\n```make install  ```      | Build and install\n```make fmt```            | Format code\n```make lint```           | Run golint\n```make terraform-demo``` | Install and run terraform apply for file under examples folder\n```make clean```          | Clean terraform state files created under examples folder\n\n\nFor documentation on using provider, check https://registry.terraform.io/providers/salesforce/policyguru/latest/docs\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsalesforce%2Fterraform-provider-policyguru","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsalesforce%2Fterraform-provider-policyguru","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsalesforce%2Fterraform-provider-policyguru/lists"}