mirror of
https://github.com/ghndrx/prowler.git
synced 2026-02-10 14:55:00 +00:00
consolidated ProwlerReadOnlyPolicy and available json
This commit is contained in:
143
README.md
143
README.md
@@ -271,148 +271,11 @@ There are some helpfull tools to save time in this process like [aws-mfa-script]
|
||||
|
||||
### Custom IAM Policy
|
||||
|
||||
Instead of using default policy SecurityAudit for the account you use for checks you may need to create a custom policy with a few more permissions (get and list, not change!) here you go a good example for a "ProwlerPolicyReadOnly":
|
||||
Some new and specific checks require Prowler to inherit more permissions than SecurityAudit to work properly. Instead of using default policy SecurityAudit for the account you use for checks you may need to create a custom policy with a few more permissions (get and list and additional services mostly). Here you go a good example for a "ProwlerReadOnlyPolicy":
|
||||
|
||||
```json
|
||||
{
|
||||
"Version": "2012-10-17",
|
||||
"Statement": [{
|
||||
"Action": [
|
||||
"acm:describecertificate",
|
||||
"acm:listcertificates",
|
||||
"apigateway:get",
|
||||
"autoscaling:describe*",
|
||||
"cloudformation:describestack*",
|
||||
"cloudformation:getstackpolicy",
|
||||
"cloudformation:gettemplate",
|
||||
"cloudformation:liststack*",
|
||||
"cloudfront:get*",
|
||||
"cloudfront:list*",
|
||||
"cloudtrail:describetrails",
|
||||
"cloudtrail:geteventselectors",
|
||||
"cloudtrail:gettrailstatus",
|
||||
"cloudtrail:listtags",
|
||||
"cloudwatch:describe*",
|
||||
"codecommit:batchgetrepositories",
|
||||
"codecommit:getbranch",
|
||||
"codecommit:getobjectidentifier",
|
||||
"codecommit:getrepository",
|
||||
"codecommit:list*",
|
||||
"codedeploy:batch*",
|
||||
"codedeploy:get*",
|
||||
"codedeploy:list*",
|
||||
"config:deliver*",
|
||||
"config:describe*",
|
||||
"config:get*",
|
||||
"datapipeline:describeobjects",
|
||||
"datapipeline:describepipelines",
|
||||
"datapipeline:evaluateexpression",
|
||||
"datapipeline:getpipelinedefinition",
|
||||
"datapipeline:listpipelines",
|
||||
"datapipeline:queryobjects",
|
||||
"datapipeline:validatepipelinedefinition",
|
||||
"directconnect:describe*",
|
||||
"dynamodb:listtables",
|
||||
"ec2:describe*",
|
||||
"ec2:GetEbsEncryptionByDefault",
|
||||
"ecr:describe*",
|
||||
"ecs:describe*",
|
||||
"ecs:list*",
|
||||
"elasticache:describe*",
|
||||
"elasticbeanstalk:describe*",
|
||||
"elasticloadbalancing:describe*",
|
||||
"elasticmapreduce:describejobflows",
|
||||
"elasticmapreduce:listclusters",
|
||||
"es:describeelasticsearchdomainconfig",
|
||||
"es:listdomainnames",
|
||||
"firehose:describe*",
|
||||
"firehose:list*",
|
||||
"glacier:listvaults",
|
||||
"guardduty:GetDetector",
|
||||
"guardduty:listdetectors",
|
||||
"iam:generatecredentialreport",
|
||||
"iam:get*",
|
||||
"iam:list*",
|
||||
"kms:describe*",
|
||||
"kms:get*",
|
||||
"kms:list*",
|
||||
"lambda:getpolicy",
|
||||
"lambda:listfunctions",
|
||||
"logs:DescribeLogGroups",
|
||||
"logs:DescribeMetricFilters",
|
||||
"rds:describe*",
|
||||
"rds:downloaddblogfileportion",
|
||||
"rds:listtagsforresource",
|
||||
"redshift:describe*",
|
||||
"route53domains:getdomaindetail",
|
||||
"route53domains:getoperationdetail",
|
||||
"route53domains:listdomains",
|
||||
"route53domains:listoperations",
|
||||
"route53domains:listtagsfordomain",
|
||||
"route53:getchange",
|
||||
"route53:getcheckeripranges",
|
||||
"route53:getgeolocation",
|
||||
"route53:gethealthcheck",
|
||||
"route53:gethealthcheckcount",
|
||||
"route53:gethealthchecklastfailurereason",
|
||||
"route53:gethostedzone",
|
||||
"route53:gethostedzonecount",
|
||||
"route53:getreusabledelegationset",
|
||||
"route53:listgeolocations",
|
||||
"route53:listhealthchecks",
|
||||
"route53:listhostedzones",
|
||||
"route53:listhostedzonesbyname",
|
||||
"route53:listqueryloggingconfigs",
|
||||
"route53:listresourcerecordsets",
|
||||
"route53:listreusabledelegationsets",
|
||||
"route53:listtagsforresource",
|
||||
"route53:listtagsforresources",
|
||||
"s3:getbucket*",
|
||||
"s3:GetEncryptionConfiguration",
|
||||
"s3:getlifecycleconfiguration",
|
||||
"s3:getobjectacl",
|
||||
"s3:getobjectversionacl",
|
||||
"s3:listallmybuckets",
|
||||
"sdb:domainmetadata",
|
||||
"sdb:listdomains",
|
||||
"ses:getidentitydkimattributes",
|
||||
"ses:getidentityverificationattributes",
|
||||
"ses:listidentities",
|
||||
"ses:listverifiedemailaddresses",
|
||||
"ses:sendemail",
|
||||
"sns:gettopicattributes",
|
||||
"sns:listsubscriptionsbytopic",
|
||||
"sns:listtopics",
|
||||
"sqs:getqueueattributes",
|
||||
"sqs:listqueues",
|
||||
"support:describetrustedadvisorchecks",
|
||||
"tag:getresources",
|
||||
"tag:gettagkeys"
|
||||
],
|
||||
"Effect": "Allow",
|
||||
"Resource": "*"
|
||||
}]
|
||||
}
|
||||
```
|
||||
[iam/prowler-policy.json](iam/prowler-policy.json)
|
||||
|
||||
### Incremental IAM Policy
|
||||
|
||||
Alternatively, here is a policy which defines the permissions which are NOT present in the AWS Managed SecurityAudit policy. Attach both this policy and the [AWS Managed SecurityAudit policy](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/SecurityAudit$jsonEditor) to the group and you're good to go.
|
||||
|
||||
```sh
|
||||
{
|
||||
"Version": "2012-10-17",
|
||||
"Statement": [
|
||||
{
|
||||
"Action": [
|
||||
"support:DescribeTrustedAdvisorChecks"
|
||||
],
|
||||
"Effect": "Allow",
|
||||
"Resource": "*"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
> Note: `ec2:get*` is included in ProwlerReadOnlyPolicy policy above, that includes `get-password-data`, type `aws ec2 get-password-data help` to better understand its implications.
|
||||
|
||||
### Bootstrap Script
|
||||
|
||||
|
||||
Reference in New Issue
Block a user