I want to create a role with a policy that is able to only create a specific resource (secret in secrets manager) named "secret_x" and only able to read this resource.
The following policy does not work when trying to create the secret, giving the error: "no identity-based policy allows the secretsmanager:CreateSecret action":
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowCreateAndReadSecret",
"Effect": "Allow",
"Action": [
"secretsmanager:CreateSecret",
"secretsmanager:DescribeSecret",
"secretsmanager:GetSecretValue"
],
"Resource": [
"arn:aws:secretsmanager:eu-central-1:<account_nr>:secret:secret_x"
]
}
]
}
The AWS standard SecretManagerReadWrite policy contains many other services, I can't find (except for KMS) why these are required:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "BasePermissions",
"Effect": "Allow",
"Action": [
"secretsmanager:*",
"cloudformation:CreateChangeSet",
"cloudformation:DescribeChangeSet",
"cloudformation:DescribeStackResource",
"cloudformation:DescribeStacks",
"cloudformation:ExecuteChangeSet",
"docdb-elastic:GetCluster",
"docdb-elastic:ListClusters",
"ec2:DescribeSecurityGroups",
"ec2:DescribeSubnets",
"ec2:DescribeVpcs",
"kms:DescribeKey",
"kms:ListAliases",
"kms:ListKeys",
"lambda:ListFunctions",
"rds:DescribeDBClusters",
"rds:DescribeDBInstances",
"redshift:DescribeClusters",
"redshift-serverless:ListWorkgroups",
"redshift-serverless:GetNamespace",
"tag:GetResources"
],
"Resource": "*"
},
{
"Sid": "LambdaPermissions",
"Effect": "Allow",
"Action": [
"lambda:AddPermission",
"lambda:CreateFunction",
"lambda:GetFunction",
"lambda:InvokeFunction",
"lambda:UpdateFunctionConfiguration"
],
"Resource": "arn:aws:lambda:*:*:function:SecretsManager*"
},
{
"Sid": "SARPermissions",
"Effect": "Allow",
"Action": [
"serverlessrepo:CreateCloudFormationChangeSet",
"serverlessrepo:GetApplication"
],
"Resource": "arn:aws:serverlessrepo:*:*:applications/SecretsManager*"
},
{
"Sid": "S3Permissions",
"Effect": "Allow",
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::awsserverlessrepo-changesets*",
"arn:aws:s3:::secrets-manager-rotation-apps-*/*"
]
}
]
}
How can I make the principle in such way that it can only create and only read the secret_x while at the same time having as less permissions as possible?