Remove hacking/aws_config
AWS hacking config has been moved to the AWS CI terminator repo, and is no longer required in base. https://github.com/mattclay/aws-terminator/pull/91
This commit is contained in:
parent
9139c1f81d
commit
0bf7a08eb6
9 changed files with 0 additions and 1307 deletions
|
@ -1,330 +0,0 @@
|
|||
# Requires pandas, bs4, html5lib, and lxml
|
||||
#
|
||||
# Call script with the output from aws_resource_actions callback, e.g.
|
||||
# python build_iam_policy_framework.py ['ec2:AuthorizeSecurityGroupEgress', 'ec2:AuthorizeSecurityGroupIngress', 'sts:GetCallerIdentity']
|
||||
#
|
||||
# The sample output:
|
||||
# {
|
||||
# "Version": "2012-10-17",
|
||||
# "Statement": [
|
||||
# {
|
||||
# "Sid": "AnsibleEditor0",
|
||||
# "Effect": "Allow",
|
||||
# "Action": [
|
||||
# "ec2:AuthorizeSecurityGroupEgress",
|
||||
# "ec2:AuthorizeSecurityGroupIngress"
|
||||
# ],
|
||||
# "Resource": "arn:aws:ec2:${Region}:${Account}:security-group/${SecurityGroupId}"
|
||||
# },
|
||||
# {
|
||||
# "Sid": "AnsibleEditor1",
|
||||
# "Effect": "Allow",
|
||||
# "Action": [
|
||||
# "sts:GetCallerIdentity"
|
||||
# ],
|
||||
# "Resource": "*"
|
||||
# }
|
||||
# ]
|
||||
# }
|
||||
#
|
||||
# Policy troubleshooting:
|
||||
# - If there are more actions in the policy than you provided, AWS has documented dependencies for some of your actions and
|
||||
# those have been added to the policy.
|
||||
# - If there are fewer actions in the policy than you provided, some of your actions are not in the IAM table of actions for
|
||||
# that service. For example, the API call s3:DeleteObjects does not actually correlate to the permission needed in a policy.
|
||||
# In this case s3:DeleteObject is the permission required to allow both the s3:DeleteObjects action and the s3:DeleteObject action.
|
||||
# - The policies output are only as accurate as the AWS documentation. If the policy does not permit the
|
||||
# necessary actions, look for undocumented dependencies. For example, redshift:CreateCluster requires ec2:DescribeVpcs,
|
||||
# ec2:DescribeSubnets, ec2:DescribeSecurityGroups, and ec2:DescribeInternetGateways, but AWS does not document this.
|
||||
#
|
||||
|
||||
from __future__ import (absolute_import, division, print_function)
|
||||
__metaclass__ = type
|
||||
|
||||
import json
|
||||
import requests
|
||||
import sys
|
||||
|
||||
missing_dependencies = []
|
||||
try:
|
||||
import pandas as pd
|
||||
except ImportError:
|
||||
missing_dependencies.append('pandas')
|
||||
try:
|
||||
import bs4
|
||||
except ImportError:
|
||||
missing_dependencies.append('bs4')
|
||||
try:
|
||||
import html5lib
|
||||
except ImportError:
|
||||
missing_dependencies.append('html5lib')
|
||||
try:
|
||||
import lxml
|
||||
except ImportError:
|
||||
missing_dependencies.append('lxml')
|
||||
|
||||
|
||||
irregular_service_names = {
|
||||
'a4b': 'alexaforbusiness',
|
||||
'appstream': 'appstream2.0',
|
||||
'acm': 'certificatemanager',
|
||||
'acm-pca': 'certificatemanagerprivatecertificateauthority',
|
||||
'aws-marketplace-management': 'marketplacemanagementportal',
|
||||
'ce': 'costexplorerservice',
|
||||
'cognito-identity': 'cognitoidentity',
|
||||
'cognito-sync': 'cognitosync',
|
||||
'cognito-idp': 'cognitouserpools',
|
||||
'cur': 'costandusagereport',
|
||||
'dax': 'dynamodbacceleratordax',
|
||||
'dlm': 'datalifecyclemanager',
|
||||
'dms': 'databasemigrationservice',
|
||||
'ds': 'directoryservice',
|
||||
'ec2messages': 'messagedeliveryservice',
|
||||
'ecr': 'ec2containerregistry',
|
||||
'ecs': 'elasticcontainerservice',
|
||||
'eks': 'elasticcontainerserviceforkubernetes',
|
||||
'efs': 'elasticfilesystem',
|
||||
'es': 'elasticsearchservice',
|
||||
'events': 'cloudwatchevents',
|
||||
'firehose': 'kinesisfirehose',
|
||||
'fms': 'firewallmanager',
|
||||
'health': 'healthapisandnotifications',
|
||||
'importexport': 'importexportdiskservice',
|
||||
'iot1click': 'iot1-click',
|
||||
'kafka': 'managedstreamingforkafka',
|
||||
'kinesisvideo': 'kinesisvideostreams',
|
||||
'kms': 'keymanagementservice',
|
||||
'license-manager': 'licensemanager',
|
||||
'logs': 'cloudwatchlogs',
|
||||
'opsworks-cm': 'opsworksconfigurationmanagement',
|
||||
'mediaconnect': 'elementalmediaconnect',
|
||||
'mediaconvert': 'elementalmediaconvert',
|
||||
'medialive': 'elementalmedialive',
|
||||
'mediapackage': 'elementalmediapackage',
|
||||
'mediastore': 'elementalmediastore',
|
||||
'mgh': 'migrationhub',
|
||||
'mobiletargeting': 'pinpoint',
|
||||
'pi': 'performanceinsights',
|
||||
'pricing': 'pricelist',
|
||||
'ram': 'resourceaccessmanager',
|
||||
'resource-groups': 'resourcegroups',
|
||||
'sdb': 'simpledb',
|
||||
'servicediscovery': 'cloudmap',
|
||||
'serverlessrepo': 'serverlessapplicationrepository',
|
||||
'sms': 'servermigrationservice',
|
||||
'sms-voice': 'pinpointsmsandvoiceservice',
|
||||
'sso-directory': 'ssodirectory',
|
||||
'ssm': 'systemsmanager',
|
||||
'ssmmessages': 'sessionmanagermessagegatewayservice',
|
||||
'states': 'stepfunctions',
|
||||
'sts': 'securitytokenservice',
|
||||
'swf': 'simpleworkflowservice',
|
||||
'tag': 'resourcegrouptaggingapi',
|
||||
'transfer': 'transferforsftp',
|
||||
'waf-regional': 'wafregional',
|
||||
'wam': 'workspacesapplicationmanager',
|
||||
'xray': 'x-ray'
|
||||
}
|
||||
|
||||
irregular_service_links = {
|
||||
'apigateway': [
|
||||
'https://docs.aws.amazon.com/IAM/latest/UserGuide/list_manageamazonapigateway.html'
|
||||
],
|
||||
'aws-marketplace': [
|
||||
'https://docs.aws.amazon.com/IAM/latest/UserGuide/list_awsmarketplace.html',
|
||||
'https://docs.aws.amazon.com/IAM/latest/UserGuide/list_awsmarketplacemeteringservice.html',
|
||||
'https://docs.aws.amazon.com/IAM/latest/UserGuide/list_awsprivatemarketplace.html'
|
||||
],
|
||||
'discovery': [
|
||||
'https://docs.aws.amazon.com/IAM/latest/UserGuide/list_applicationdiscovery.html'
|
||||
],
|
||||
'elasticloadbalancing': [
|
||||
'https://docs.aws.amazon.com/IAM/latest/UserGuide/list_elasticloadbalancing.html',
|
||||
'https://docs.aws.amazon.com/IAM/latest/UserGuide/list_elasticloadbalancingv2.html'
|
||||
],
|
||||
'globalaccelerator': [
|
||||
'https://docs.aws.amazon.com/IAM/latest/UserGuide/list_globalaccelerator.html'
|
||||
]
|
||||
}
|
||||
|
||||
|
||||
def get_docs_by_prefix(prefix):
|
||||
amazon_link_form = 'https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazon{0}.html'
|
||||
aws_link_form = 'https://docs.aws.amazon.com/IAM/latest/UserGuide/list_aws{0}.html'
|
||||
|
||||
if prefix in irregular_service_links:
|
||||
links = irregular_service_links[prefix]
|
||||
else:
|
||||
if prefix in irregular_service_names:
|
||||
prefix = irregular_service_names[prefix]
|
||||
links = [amazon_link_form.format(prefix), aws_link_form.format(prefix)]
|
||||
|
||||
return links
|
||||
|
||||
|
||||
def get_html(links):
|
||||
html_list = []
|
||||
for link in links:
|
||||
html = requests.get(link).content
|
||||
try:
|
||||
parsed_html = pd.read_html(html)
|
||||
html_list.append(parsed_html)
|
||||
except ValueError as e:
|
||||
if 'No tables found' in str(e):
|
||||
pass
|
||||
else:
|
||||
raise e
|
||||
|
||||
return html_list
|
||||
|
||||
|
||||
def get_tables(service):
|
||||
links = get_docs_by_prefix(service)
|
||||
html_list = get_html(links)
|
||||
action_tables = []
|
||||
arn_tables = []
|
||||
for df_list in html_list:
|
||||
for df in df_list:
|
||||
table = json.loads(df.to_json(orient='split'))
|
||||
table_data = table['data'][0]
|
||||
if 'Actions' in table_data and 'Resource Types (*required)' in table_data:
|
||||
action_tables.append(table['data'][1::])
|
||||
elif 'Resource Types' in table_data and 'ARN' in table_data:
|
||||
arn_tables.append(table['data'][1::])
|
||||
|
||||
# Action table indices:
|
||||
# 0: Action, 1: Description, 2: Access level, 3: Resource type, 4: Condition keys, 5: Dependent actions
|
||||
# ARN tables indices:
|
||||
# 0: Resource type, 1: ARN template, 2: Condition keys
|
||||
return action_tables, arn_tables
|
||||
|
||||
|
||||
def add_dependent_action(resources, dependency):
|
||||
resource, action = dependency.split(':')
|
||||
if resource in resources:
|
||||
resources[resource].append(action)
|
||||
else:
|
||||
resources[resource] = [action]
|
||||
return resources
|
||||
|
||||
|
||||
def get_dependent_actions(resources):
|
||||
for service in dict(resources):
|
||||
action_tables, arn_tables = get_tables(service)
|
||||
for found_action_table in action_tables:
|
||||
for action_stuff in found_action_table:
|
||||
if action_stuff is None:
|
||||
continue
|
||||
if action_stuff[0] in resources[service] and action_stuff[5]:
|
||||
dependencies = action_stuff[5].split()
|
||||
if isinstance(dependencies, list):
|
||||
for dependency in dependencies:
|
||||
resources = add_dependent_action(resources, dependency)
|
||||
else:
|
||||
resources = add_dependent_action(resources, dependencies)
|
||||
return resources
|
||||
|
||||
|
||||
def get_actions_by_service(resources):
|
||||
service_action_dict = {}
|
||||
dependencies = {}
|
||||
for service in resources:
|
||||
action_tables, arn_tables = get_tables(service)
|
||||
|
||||
# Create dict of the resource type to the corresponding ARN
|
||||
arn_dict = {}
|
||||
for found_arn_table in arn_tables:
|
||||
for arn_stuff in found_arn_table:
|
||||
arn_dict["{0}*".format(arn_stuff[0])] = arn_stuff[1]
|
||||
|
||||
# Create dict of the action to the corresponding ARN
|
||||
action_dict = {}
|
||||
for found_action_table in action_tables:
|
||||
for action_stuff in found_action_table:
|
||||
if action_stuff[0] is None:
|
||||
continue
|
||||
if arn_dict.get(action_stuff[3]):
|
||||
action_dict[action_stuff[0]] = arn_dict[action_stuff[3]]
|
||||
else:
|
||||
action_dict[action_stuff[0]] = None
|
||||
service_action_dict[service] = action_dict
|
||||
return service_action_dict
|
||||
|
||||
|
||||
def get_resource_arns(aws_actions, action_dict):
|
||||
resource_arns = {}
|
||||
for resource_action in aws_actions:
|
||||
resource, action = resource_action.split(':')
|
||||
if action not in action_dict:
|
||||
continue
|
||||
if action_dict[action] is None:
|
||||
resource = "*"
|
||||
else:
|
||||
resource = action_dict[action].replace("${Partition}", "aws")
|
||||
if resource not in resource_arns:
|
||||
resource_arns[resource] = []
|
||||
resource_arns[resource].append(resource_action)
|
||||
return resource_arns
|
||||
|
||||
|
||||
def get_resources(actions):
|
||||
resources = {}
|
||||
for action in actions:
|
||||
resource, action = action.split(':')
|
||||
if resource not in resources:
|
||||
resources[resource] = []
|
||||
resources[resource].append(action)
|
||||
return resources
|
||||
|
||||
|
||||
def combine_arn_actions(resources, service_action_arn_dict):
|
||||
arn_actions = {}
|
||||
for service in service_action_arn_dict:
|
||||
service_arn_actions = get_resource_arns(aws_actions, service_action_arn_dict[service])
|
||||
for resource in service_arn_actions:
|
||||
if resource in arn_actions:
|
||||
arn_actions[resource].extend(service_arn_actions[resource])
|
||||
else:
|
||||
arn_actions[resource] = service_arn_actions[resource]
|
||||
return arn_actions
|
||||
|
||||
|
||||
def combine_actions_and_dependent_actions(resources):
|
||||
aws_actions = []
|
||||
for resource in resources:
|
||||
for action in resources[resource]:
|
||||
aws_actions.append('{0}:{1}'.format(resource, action))
|
||||
return set(aws_actions)
|
||||
|
||||
|
||||
def get_actions_restricted_by_arn(aws_actions):
|
||||
resources = get_resources(aws_actions)
|
||||
resources = get_dependent_actions(resources)
|
||||
service_action_arn_dict = get_actions_by_service(resources)
|
||||
aws_actions = combine_actions_and_dependent_actions(resources)
|
||||
return combine_arn_actions(aws_actions, service_action_arn_dict)
|
||||
|
||||
|
||||
def main(aws_actions):
|
||||
arn_actions = get_actions_restricted_by_arn(aws_actions)
|
||||
statement = []
|
||||
for resource_restriction in arn_actions:
|
||||
statement.append({
|
||||
"Sid": "AnsibleEditor{0}".format(len(statement)),
|
||||
"Effect": "Allow",
|
||||
"Action": arn_actions[resource_restriction],
|
||||
"Resource": resource_restriction
|
||||
})
|
||||
|
||||
policy = {"Version": "2012-10-17", "Statement": statement}
|
||||
print(json.dumps(policy, indent=4))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
if missing_dependencies:
|
||||
sys.exit('Missing Python libraries: {0}'.format(', '.join(missing_dependencies)))
|
||||
actions = sys.argv[1:]
|
||||
if len(actions) == 1:
|
||||
actions = sys.argv[1].split(',')
|
||||
aws_actions = [action.strip('[], "\'') for action in actions]
|
||||
main(aws_actions)
|
|
@ -1,55 +0,0 @@
|
|||
# Usage: ansible-playbook setup-iam.yml -e iam_group=ansible_test -vv
|
||||
#
|
||||
# Creates IAM policies and associates them with iam_group. This group
|
||||
# can then be associated with an appropriate user
|
||||
#
|
||||
# You can pass -e profile=boto_profile_name if you have a profile that
|
||||
# you can use, otherwise use normal AWS methods (env variables, instance
|
||||
# profile, etc)
|
||||
#
|
||||
# If you want to use a region other than us-east-1 (and only us-east-2
|
||||
# works with ansible-test), pass -e region=us-east-2
|
||||
#
|
||||
# Requires 2.4 for iam_managed_policy and iam_group
|
||||
|
||||
- hosts: localhost
|
||||
connection: local
|
||||
gather_facts: no
|
||||
vars:
|
||||
aws_region: "{{ region|default('us-east-1') }}"
|
||||
|
||||
tasks:
|
||||
- name: Check that required variables are set
|
||||
fail:
|
||||
msg: "You must set the iam_group variable"
|
||||
when: iam_group is not defined
|
||||
|
||||
- name: Get aws account ID
|
||||
aws_caller_info:
|
||||
profile: "{{ profile|default(omit) }}"
|
||||
register: aws_caller_info
|
||||
|
||||
- name: Set aws_account_fact
|
||||
set_fact:
|
||||
aws_account: "{{ aws_caller_info.account }}"
|
||||
|
||||
|
||||
- name: Ensure Managed IAM policies exist
|
||||
iam_managed_policy:
|
||||
policy_name: "AnsibleTest{{ item|basename|regex_replace('-.*', '')|capitalize }}Policy"
|
||||
policy: "{{ lookup('template', item) }}"
|
||||
state: present
|
||||
profile: "{{ profile|default(omit) }}"
|
||||
with_fileglob: "testing_policies/*.json"
|
||||
register: iam_managed_policies
|
||||
|
||||
- debug:
|
||||
msg: "{{ iam_managed_policies | json_query('results[].policy.policy_name') }}"
|
||||
|
||||
- name: Ensure IAM group exists and attach managed policies
|
||||
iam_group:
|
||||
name: "{{ iam_group }}"
|
||||
state: present
|
||||
managed_policy: "{{ iam_managed_policies | json_query('results[].policy.policy_name') }}"
|
||||
profile: "{{ profile|default(omit) }}"
|
||||
purge_policy: yes
|
|
@ -1,280 +0,0 @@
|
|||
{# Not all Autoscaling API Actions allow specified resources #}
|
||||
{# See http://docs.aws.amazon.com/autoscaling/latest/userguide/control-access-using-iam.html#policy-auto-scaling-resources #}
|
||||
{
|
||||
"Version": "2012-10-17",
|
||||
"Statement": [
|
||||
{
|
||||
"Sid": "DescribeAutoscaling",
|
||||
"Effect": "Allow",
|
||||
"Action": [
|
||||
"autoscaling:DescribeAutoScalingGroups",
|
||||
"autoscaling:DescribeLaunchConfigurations",
|
||||
"autoscaling:DescribePolicies"
|
||||
],
|
||||
"Resource": "*"
|
||||
},
|
||||
{
|
||||
"Sid": "AllowAutoscaling",
|
||||
"Effect": "Allow",
|
||||
"Action": [
|
||||
"autoscaling:*LaunchConfiguration",
|
||||
"autoscaling:*LoadBalancers",
|
||||
"autoscaling:*AutoScalingGroup",
|
||||
"autoscaling:*MetricsCollection",
|
||||
"autoscaling:PutScalingPolicy",
|
||||
"autoscaling:DeletePolicy",
|
||||
"autoscaling:*Tags"
|
||||
],
|
||||
"Resource": [
|
||||
"arn:aws:autoscaling:{{aws_region}}:{{aws_account}}:*"
|
||||
]
|
||||
},
|
||||
{# Note that not all EC2 API Actions allow a specific resource #}
|
||||
{# See http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ec2-api-permissions.html#ec2-api-unsupported-resource-permissions #}
|
||||
{
|
||||
"Sid": "AllowUnspecifiedEC2Resource",
|
||||
"Effect": "Allow",
|
||||
"Action": [
|
||||
"ec2:*LaunchTemplate",
|
||||
"ec2:*LaunchTemplateVersion",
|
||||
"ec2:*LaunchTemplateVersions",
|
||||
"ec2:AttachVolume",
|
||||
"ec2:CreateImage",
|
||||
"ec2:CreateKeyPair",
|
||||
"ec2:CreateSecurityGroup",
|
||||
"ec2:CreateSnapshot",
|
||||
"ec2:CreateTags",
|
||||
"ec2:DeleteKeyPair",
|
||||
"ec2:DeleteSnapshot",
|
||||
"ec2:DeleteTags",
|
||||
"ec2:DeregisterImage",
|
||||
"ec2:Describe*",
|
||||
"ec2:DetachVolume",
|
||||
"ec2:ImportKeyPair",
|
||||
"ec2:ModifyImageAttribute",
|
||||
"ec2:ModifyInstanceAttribute",
|
||||
"ec2:RegisterImage",
|
||||
"ec2:ReplaceIamInstanceProfileAssociation",
|
||||
"ec2:ReportInstanceStatus"
|
||||
],
|
||||
"Resource": "*"
|
||||
},
|
||||
{
|
||||
"Sid": "AllowSpecifiedEC2Resource",
|
||||
"Effect": "Allow",
|
||||
"Action": [
|
||||
"ec2:AuthorizeSecurityGroupIngress",
|
||||
"ec2:AuthorizeSecurityGroupEgress",
|
||||
"ec2:CreateTags",
|
||||
"ec2:CreateVolume",
|
||||
"ec2:DeleteRouteTable",
|
||||
"ec2:DeleteSecurityGroup",
|
||||
"ec2:DeleteVolume",
|
||||
"ec2:RevokeSecurityGroupEgress",
|
||||
"ec2:RevokeSecurityGroupIngress",
|
||||
"ec2:RunInstances",
|
||||
"ec2:StartInstances",
|
||||
"ec2:StopInstances",
|
||||
"ec2:TerminateInstances",
|
||||
"ec2:UpdateSecurityGroupRuleDescriptionsIngress",
|
||||
"ec2:UpdateSecurityGroupRuleDescriptionsEgress"
|
||||
],
|
||||
"Resource": [
|
||||
"arn:aws:ec2:{{aws_region}}::image/*",
|
||||
"arn:aws:ec2:{{aws_region}}:{{aws_account}}:*"
|
||||
]
|
||||
},
|
||||
{# According to http://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/load-balancer-authentication-access-control.html #}
|
||||
{# Resource level access control is not possible for the new ELB API (providing Application Load Balancer functionality #}
|
||||
{# While it remains possible for the old API, there is no distinction of the Actions between old API and new API #}
|
||||
{
|
||||
"Sid": "AllowLoadBalancerOperations",
|
||||
"Effect": "Allow",
|
||||
"Action": [
|
||||
"elasticloadbalancing:*LoadBalancer",
|
||||
"elasticloadbalancing:*LoadBalancers",
|
||||
"elasticloadbalancing:*LoadBalancerListeners",
|
||||
"elasticloadbalancing:*TargetGroup",
|
||||
"elasticloadbalancing:AddTags",
|
||||
"elasticloadbalancing:ConfigureHealthCheck",
|
||||
"elasticloadbalancing:Create*",
|
||||
"elasticloadbalancing:Delete*",
|
||||
"elasticloadbalancing:DeregisterInstancesFromLoadBalancer",
|
||||
"elasticloadbalancing:Describe*",
|
||||
"elasticloadbalancing:DisableAvailabilityZonesForLoadBalancer",
|
||||
"elasticloadbalancing:EnableAvailabilityZonesForLoadBalancer",
|
||||
"elasticloadbalancing:Modify*",
|
||||
"elasticloadbalancing:Register*",
|
||||
"elasticloadbalancing:Deregister*",
|
||||
"elasticloadbalancing:Remove*"
|
||||
],
|
||||
"Resource": "*"
|
||||
},
|
||||
{# Only certain lambda actions can be restricted to a specific resource #}
|
||||
{# http://docs.aws.amazon.com/lambda/latest/dg/lambda-api-permissions-ref.html #}
|
||||
{
|
||||
"Sid": "AllowApiGateway",
|
||||
"Effect": "Allow",
|
||||
"Action": [
|
||||
"apigateway:*"
|
||||
],
|
||||
"Resource": [
|
||||
"arn:aws:apigateway:{{aws_region}}::/*"
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sid": "AllowGetUserForLambdaCreation",
|
||||
"Effect": "Allow",
|
||||
"Action": [
|
||||
"iam:GetUser"
|
||||
],
|
||||
"Resource": [
|
||||
"arn:aws:iam::{{aws_account}}:user/ansible_integration_tests"
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sid": "AllowLambdaManagementWithoutResource",
|
||||
"Effect": "Allow",
|
||||
"Action": [
|
||||
"lambda:CreateEventSourceMapping",
|
||||
"lambda:GetAccountSettings",
|
||||
"lambda:GetEventSourceMapping",
|
||||
"lambda:List*",
|
||||
"lambda:TagResource",
|
||||
"lambda:UntagResource"
|
||||
],
|
||||
"Resource": "*"
|
||||
},
|
||||
{
|
||||
"Sid": "AllowLambdaManagementWithResource",
|
||||
"Effect": "Allow",
|
||||
"Action": [
|
||||
"lambda:AddPermission",
|
||||
"lambda:CreateAlias",
|
||||
"lambda:CreateFunction",
|
||||
"lambda:DeleteAlias",
|
||||
"lambda:DeleteFunction",
|
||||
"lambda:GetAlias",
|
||||
"lambda:GetFunction",
|
||||
"lambda:GetFunctionConfiguration",
|
||||
"lambda:GetPolicy",
|
||||
"lambda:InvokeFunction",
|
||||
"lambda:PublishVersion",
|
||||
"lambda:RemovePermission",
|
||||
"lambda:UpdateAlias",
|
||||
"lambda:UpdateEventSourceMapping",
|
||||
"lambda:UpdateFunctionCode",
|
||||
"lambda:UpdateFunctionConfiguration"
|
||||
],
|
||||
"Resource": "arn:aws:lambda:{{aws_region}}:{{aws_account}}:function:*"
|
||||
},
|
||||
{
|
||||
"Sid": "AllowRoleManagement",
|
||||
"Effect": "Allow",
|
||||
"Action": [
|
||||
"iam:PassRole"
|
||||
],
|
||||
"Resource": [
|
||||
"arn:aws:iam::{{aws_account}}:role/ansible_lambda_role",
|
||||
"arn:aws:iam::{{aws_account}}:role/ecsInstanceRole",
|
||||
"arn:aws:iam::{{aws_account}}:role/ec2InstanceRole",
|
||||
"arn:aws:iam::{{aws_account}}:role/ecsServiceRole",
|
||||
"arn:aws:iam::{{aws_account}}:role/aws_eks_cluster_role",
|
||||
"arn:aws:iam::{{aws_account}}:role/ecsTaskExecutionRole"
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sid": "AllowSESManagement",
|
||||
"Effect": "Allow",
|
||||
"Action": [
|
||||
"ses:VerifyEmailIdentity",
|
||||
"ses:DeleteIdentity",
|
||||
"ses:GetIdentityVerificationAttributes",
|
||||
"ses:GetIdentityNotificationAttributes",
|
||||
"ses:VerifyDomainIdentity",
|
||||
"ses:SetIdentityNotificationTopic",
|
||||
"ses:SetIdentityHeadersInNotificationsEnabled",
|
||||
"ses:SetIdentityFeedbackForwardingEnabled",
|
||||
"ses:GetIdentityPolicies",
|
||||
"ses:PutIdentityPolicy",
|
||||
"ses:DeleteIdentityPolicy",
|
||||
"ses:ListIdentityPolicies",
|
||||
"ses:SetIdentityFeedbackForwardingEnabled",
|
||||
"ses:ListReceiptRuleSets",
|
||||
"ses:DescribeReceiptRuleSet",
|
||||
"ses:DescribeActiveReceiptRuleSet",
|
||||
"ses:SetActiveReceiptRuleSet",
|
||||
"ses:CreateReceiptRuleSet",
|
||||
"ses:DeleteReceiptRuleSet"
|
||||
],
|
||||
"Resource": [
|
||||
"*"
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sid": "AllowSNSManagement",
|
||||
"Effect": "Allow",
|
||||
"Action": [
|
||||
"SNS:CreateTopic",
|
||||
"SNS:DeleteTopic",
|
||||
"SNS:GetTopicAttributes",
|
||||
"SNS:ListSubscriptions",
|
||||
"SNS:ListSubscriptionsByTopic",
|
||||
"SNS:ListTopics",
|
||||
"SNS:SetTopicAttributes",
|
||||
"SNS:Subscribe",
|
||||
"SNS:Unsubscribe"
|
||||
],
|
||||
"Resource": [
|
||||
"*"
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sid": "AllowStepFunctionsStateMachine",
|
||||
"Effect": "Allow",
|
||||
"Action": [
|
||||
"states:CreateStateMachine",
|
||||
"states:DeleteStateMachine",
|
||||
"states:DescribeExecution",
|
||||
"states:DescribeStateMachine",
|
||||
"states:ListExecutions",
|
||||
"states:ListStateMachines",
|
||||
"states:ListTagsForResource",
|
||||
"states:StartExecution",
|
||||
"states:StopExecution",
|
||||
"states:TagResource",
|
||||
"states:UntagResource",
|
||||
"states:UpdateStateMachine"
|
||||
],
|
||||
"Resource": [
|
||||
"arn:aws:states:*:*:*"
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sid": "AllowLightsail",
|
||||
"Effect": "Allow",
|
||||
"Action": [
|
||||
"lightsail:CreateInstances",
|
||||
"lightsail:DeleteInstance",
|
||||
"lightsail:GetInstance",
|
||||
"lightsail:GetInstances",
|
||||
"lightsail:RebootInstance",
|
||||
"lightsail:StartInstance",
|
||||
"lightsail:StopInstance"
|
||||
],
|
||||
"Resource": "arn:aws:lightsail:*:*:*"
|
||||
},
|
||||
{
|
||||
"Sid": "AllowSQS",
|
||||
"Effect": "Allow",
|
||||
"Action": [
|
||||
"sqs:GetQueueURL",
|
||||
"sqs:CreateQueue",
|
||||
"sqs:GetQueueAttributes",
|
||||
"sqs:DeleteQueue",
|
||||
"sqs:SetQueueAttributes"
|
||||
],
|
||||
"Resource": "arn:aws:sqs:*:*:*"
|
||||
},
|
||||
]
|
||||
}
|
|
@ -1,80 +0,0 @@
|
|||
{
|
||||
"Version": "2012-10-17",
|
||||
"Statement": [
|
||||
{
|
||||
"Sid": "UnspecifiedCodeRepositories",
|
||||
"Effect": "Allow",
|
||||
"Action": [
|
||||
"ecr:DescribeRepositories",
|
||||
"ecr:CreateRepository"
|
||||
],
|
||||
"Resource": "*"
|
||||
},
|
||||
{
|
||||
"Sid": "SpecifiedCodeRepositories",
|
||||
"Effect": "Allow",
|
||||
"Action": [
|
||||
"ecr:GetLifecyclePolicy",
|
||||
"ecr:PutLifecyclePolicy",
|
||||
"ecr:DeleteLifecyclePolicy",
|
||||
"ecr:GetRepositoryPolicy",
|
||||
"ecr:SetRepositoryPolicy",
|
||||
"ecr:DeleteRepository",
|
||||
"ecr:DeleteRepositoryPolicy",
|
||||
"ecr:DeleteRepositoryPolicy"
|
||||
],
|
||||
"Resource": [
|
||||
"arn:aws:ecr:{{aws_region}}:{{aws_account}}:repository/ansible-*"
|
||||
]
|
||||
},
|
||||
{
|
||||
"Effect": "Allow",
|
||||
"Action": [
|
||||
"application-autoscaling:Describe*",
|
||||
"application-autoscaling:PutScalingPolicy",
|
||||
"application-autoscaling:RegisterScalableTarget",
|
||||
"cloudwatch:DescribeAlarms",
|
||||
"cloudwatch:PutMetricAlarm",
|
||||
"ecs:CreateCluster",
|
||||
"ecs:CreateService",
|
||||
"ecs:DeleteCluster",
|
||||
"ecs:DeleteService",
|
||||
"ecs:DeregisterTaskDefinition",
|
||||
"ecs:Describe*",
|
||||
"ecs:List*",
|
||||
"ecs:PutAccountSetting",
|
||||
"ecs:RegisterTaskDefinition",
|
||||
"ecs:RunTask",
|
||||
"ecs:StartTask",
|
||||
"ecs:StopTask",
|
||||
"ecs:UpdateService",
|
||||
"elasticloadbalancing:Describe*",
|
||||
"iam:GetInstanceProfile",
|
||||
"iam:GetPolicy",
|
||||
"iam:GetPolicyVersion",
|
||||
"iam:GetRole",
|
||||
"iam:ListAttachedRolePolicies",
|
||||
"iam:ListGroups",
|
||||
"iam:ListRoles",
|
||||
"iam:ListUsers"
|
||||
],
|
||||
"Resource": [
|
||||
"*"
|
||||
]
|
||||
},
|
||||
{
|
||||
"Effect": "Allow",
|
||||
"Action": [
|
||||
"eks:CreateCluster",
|
||||
"eks:DeleteCluster",
|
||||
"eks:DescribeCluster",
|
||||
"eks:ListClusters"
|
||||
],
|
||||
"Resource": [
|
||||
"*"
|
||||
]
|
||||
}
|
||||
|
||||
|
||||
]
|
||||
}
|
|
@ -1,123 +0,0 @@
|
|||
{
|
||||
"Version": "2012-10-17",
|
||||
"Statement": [
|
||||
{
|
||||
"Action": "iam:CreateServiceLinkedRole",
|
||||
"Effect": "Allow",
|
||||
"Resource": "arn:aws:iam::*:role/aws-service-role/rds.amazonaws.com/AWSServiceRoleForRDS",
|
||||
"Condition": {
|
||||
"StringLike": {
|
||||
"iam:AWSServiceName":"rds.amazonaws.com"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"Action": "iam:CreateServiceLinkedRole",
|
||||
"Effect": "Allow",
|
||||
"Resource": "arn:aws:iam::*:role/aws-service-role/redshift.amazonaws.com/AWSServiceRoleForRedshift",
|
||||
"Condition": {
|
||||
"StringLike": {
|
||||
"iam:AWSServiceName": "redshift.amazonaws.com"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"Sid": "AllowRDSReadEverywhere",
|
||||
"Effect": "Allow",
|
||||
"Action": [
|
||||
"rds:ListTagsForResource",
|
||||
"rds:DescribeDBInstances",
|
||||
"rds:DescribeDBParameterGroups",
|
||||
"rds:DescribeDBParameters",
|
||||
"rds:DescribeDBSnapshots"
|
||||
],
|
||||
"Resource": ["*"]
|
||||
},
|
||||
{
|
||||
"Sid": "AllowRDSModuleTests",
|
||||
"Effect": "Allow",
|
||||
"Action": [
|
||||
"rds:AddTagsToResource",
|
||||
"rds:CreateDBInstance",
|
||||
"rds:DeleteDBInstance",
|
||||
"rds:ModifyDBInstance",
|
||||
"rds:PromoteReadReplica",
|
||||
"rds:RebootDBInstance",
|
||||
"rds:RemoveTagsFromResource",
|
||||
"rds:RestoreDBInstanceToPointInTime",
|
||||
"rds:StartDBInstance",
|
||||
"rds:StopDBInstance"
|
||||
],
|
||||
"Resource": [
|
||||
"arn:aws:rds:{{aws_region}}:{{aws_account}}:db:ansible-test*"
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sid": "AllowRDSSnapshotManageSnapshots",
|
||||
"Effect": "Allow",
|
||||
"Action": [
|
||||
"rds:AddTagsToResource",
|
||||
"rds:CreateDBSnapshot",
|
||||
"rds:DeleteDBInstance",
|
||||
"rds:DeleteDBSnapshot",
|
||||
"rds:RemoveTagsFromResource",
|
||||
"rds:RestoreDBInstanceFromDBSnapshot",
|
||||
"rds:CreateDBInstanceReadReplica"
|
||||
],
|
||||
"Resource": [
|
||||
"arn:aws:rds:{{aws_region}}:{{aws_account}}:snapshot:ansible-test*",
|
||||
"arn:aws:rds:{{aws_region}}:{{aws_account}}:db:ansible-test*"
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sid": "AllowRDSParameterGroupManagement",
|
||||
"Effect": "Allow",
|
||||
"Action": [
|
||||
"rds:CreateDBParameterGroup",
|
||||
"rds:DeleteDBParameterGroup",
|
||||
"rds:ModifyDBParameterGroup",
|
||||
"rds:AddTagsToResource",
|
||||
"rds:RemoveTagsFromResource"
|
||||
],
|
||||
"Resource": [
|
||||
"arn:aws:rds:{{aws_region}}:{{aws_account}}:pg:*"
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sid": "AllowRedshiftManagment",
|
||||
"Action": [
|
||||
"redshift:CreateCluster",
|
||||
"redshift:CreateTags",
|
||||
"redshift:DeleteCluster",
|
||||
"redshift:DeleteTags",
|
||||
"redshift:DescribeClusters",
|
||||
"redshift:DescribeTags",
|
||||
"redshift:ModifyCluster",
|
||||
"redshift:RebootCluster"
|
||||
],
|
||||
"Effect": "Allow",
|
||||
"Resource": "*"
|
||||
},
|
||||
{
|
||||
"Sid": "AllowRDSSubnetGroups",
|
||||
"Effect": "Allow",
|
||||
"Action": [
|
||||
"rds:CreateDBSubnetGroup",
|
||||
"rds:DeleteDBSubnetGroup",
|
||||
"rds:DescribeDBSubnetGroups",
|
||||
"rds:ModifyDBSubnetGroup"
|
||||
],
|
||||
"Resource": ["*"]
|
||||
},
|
||||
{
|
||||
"Sid": "DMSEndpoints",
|
||||
"Effect": "Allow",
|
||||
"Action": [
|
||||
"dms:CreateEndpoint",
|
||||
"dms:DeleteEndpoint",
|
||||
"dms:DescribeEndpoints",
|
||||
"dms:ModifyEndpoint"
|
||||
],
|
||||
"Resource": ["*"]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -1,40 +0,0 @@
|
|||
{
|
||||
"Version": "2012-10-17",
|
||||
"Statement": [
|
||||
{
|
||||
"Sid": "AllowCodeCommitModuleTests",
|
||||
"Effect": "Allow",
|
||||
"Action": [
|
||||
"codecommit:ListRepositories",
|
||||
"codecommit:*Repository",
|
||||
"codecommit:*RepositoryDescription"
|
||||
],
|
||||
"Resource": [
|
||||
"*"
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sid": "AllowCloudformationTests",
|
||||
"Effect": "Allow",
|
||||
"Action": [
|
||||
"cloudformation:CreateChangeSet",
|
||||
"cloudformation:CreateStack",
|
||||
"cloudformation:DeleteChangeSet",
|
||||
"cloudformation:DeleteStack",
|
||||
"cloudformation:DescribeChangeSet",
|
||||
"cloudformation:DescribeStackEvents",
|
||||
"cloudformation:DescribeStacks",
|
||||
"cloudformation:GetStackPolicy",
|
||||
"cloudformation:GetTemplate",
|
||||
"cloudformation:ListChangeSets",
|
||||
"cloudformation:ListExports",
|
||||
"cloudformation:ListStackResources",
|
||||
"cloudformation:UpdateStack",
|
||||
"cloudformation:UpdateTerminationProtection"
|
||||
],
|
||||
"Resource": [
|
||||
"*"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -1,117 +0,0 @@
|
|||
{
|
||||
"Version": "2012-10-17",
|
||||
"Statement": [
|
||||
{
|
||||
"Sid": "ManageRoute53ForTests",
|
||||
"Effect": "Allow",
|
||||
"Action": [
|
||||
"route53:CreateHostedZone",
|
||||
"route53:ChangeResourceRecordSets",
|
||||
"route53:DeleteHostedZone",
|
||||
"route53:GetHostedZone",
|
||||
"route53:ListHostedZones",
|
||||
"route53:ListResourceRecordSets",
|
||||
"route53:UpdateHostedZoneComment"
|
||||
],
|
||||
"Resource": "*"
|
||||
},
|
||||
{
|
||||
"Sid": "AllowInternetGatewayManagement",
|
||||
"Effect": "Allow",
|
||||
"Action": [
|
||||
"ec2:CreateInternetGateway",
|
||||
"ec2:DeleteInternetGateway",
|
||||
"ec2:DescribeInternetGateways"
|
||||
],
|
||||
"Resource": "*"
|
||||
},
|
||||
{
|
||||
"Sid": "AllowTransitGatewayManagement",
|
||||
"Effect": "Allow",
|
||||
"Action": [
|
||||
"ec2:CreateTransitGateway",
|
||||
"ec2:DeleteTransitGateway",
|
||||
"ec2:DescribeTransitGateways"
|
||||
],
|
||||
"Resource": "*"
|
||||
},
|
||||
{
|
||||
"Sid": "AllowUnspecifiedEC2NetworkingResource",
|
||||
"Effect": "Allow",
|
||||
"Action": [
|
||||
"ec2:AllocateAddress",
|
||||
"ec2:AssociateAddress",
|
||||
"ec2:AssociateDhcpOptions",
|
||||
"ec2:AssociateRouteTable",
|
||||
"ec2:AssociateVpcCidrBlock",
|
||||
"ec2:AssociateSubnetCidrBlock",
|
||||
"ec2:AttachInternetGateway",
|
||||
"ec2:AttachNetworkInterface",
|
||||
"ec2:AttachVpnGateway",
|
||||
"ec2:CreateCustomerGateway",
|
||||
"ec2:CreateDhcpOptions",
|
||||
"ec2:CreateNatGateway",
|
||||
"ec2:CreateNetworkAcl",
|
||||
"ec2:CreateNetworkAclEntry",
|
||||
"ec2:CreateNetworkInterface",
|
||||
"ec2:CreateRoute",
|
||||
"ec2:CreateRouteTable",
|
||||
"ec2:CreateSubnet",
|
||||
"ec2:CreateVpc",
|
||||
"ec2:CreateVpnConnection",
|
||||
"ec2:CreateVpnGateway",
|
||||
"ec2:DeleteCustomerGateway",
|
||||
"ec2:DeleteDhcpOptions",
|
||||
"ec2:DeleteInternetGateway",
|
||||
"ec2:DeleteNatGateway",
|
||||
"ec2:DeleteNetworkAcl",
|
||||
"ec2:DeleteNetworkAclEntry",
|
||||
"ec2:DeleteNetworkInterface",
|
||||
"ec2:DeleteRoute",
|
||||
"ec2:DeleteRouteTable",
|
||||
"ec2:DeleteSubnet",
|
||||
"ec2:DeleteVpc",
|
||||
"ec2:DeleteVpnConnection",
|
||||
"ec2:DeleteVpnGateway",
|
||||
"ec2:DetachInternetGateway",
|
||||
"ec2:DetachVpnGateway",
|
||||
"ec2:Describe*",
|
||||
"ec2:DisassociateAddress",
|
||||
"ec2:DisassociateRouteTable",
|
||||
"ec2:DisassociateSubnetCidrBlock",
|
||||
"ec2:DisassociateVpcCidrBlock",
|
||||
"ec2:ModifySubnetAttribute",
|
||||
"ec2:ModifyVpcAttribute",
|
||||
"ec2:ReleaseAddress",
|
||||
"ec2:ReplaceNetworkAclAssociation",
|
||||
"ec2:ReplaceNetworkAclEntry",
|
||||
"ec2:ReplaceRouteTableAssociation"
|
||||
],
|
||||
"Resource": "*"
|
||||
},
|
||||
{
|
||||
"Sid": "AllowCloudfrontUsage",
|
||||
"Effect": "Allow",
|
||||
"Action": [
|
||||
"cloudfront:CreateDistribution",
|
||||
"cloudfront:CreateDistributionWithTags",
|
||||
"cloudfront:CreateCloudFrontOriginAccessIdentity",
|
||||
"cloudfront:DeleteDistribution",
|
||||
"cloudfront:GetDistribution",
|
||||
"cloudfront:GetStreamingDistribution",
|
||||
"cloudfront:GetDistributionConfig",
|
||||
"cloudfront:GetStreamingDistributionConfig",
|
||||
"cloudfront:GetInvalidation",
|
||||
"cloudfront:ListDistributions",
|
||||
"cloudfront:ListDistributionsByWebACLId",
|
||||
"cloudfront:ListInvalidations",
|
||||
"cloudfront:ListStreamingDistributions",
|
||||
"cloudfront:ListTagsForResource",
|
||||
"cloudfront:TagResource",
|
||||
"cloudfront:UntagResource",
|
||||
"cloudfront:UpdateDistribution"
|
||||
],
|
||||
"Resource": "*"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -1,228 +0,0 @@
|
|||
{
|
||||
"Version": "2012-10-17",
|
||||
"Statement": [
|
||||
{
|
||||
"Action": [
|
||||
"iam:GetGroup",
|
||||
"iam:GetInstanceProfile",
|
||||
"iam:CreateInstanceProfile",
|
||||
"iam:GetPolicy",
|
||||
"iam:GetPolicyVersion",
|
||||
"iam:GetRole",
|
||||
"iam:GetRolePolicy",
|
||||
"iam:GetUser",
|
||||
"iam:ListAttachedGroupPolicies",
|
||||
"iam:ListAttachedRolePolicies",
|
||||
"iam:ListAttachedUserPolicies",
|
||||
"iam:ListGroups",
|
||||
"iam:ListInstanceProfiles",
|
||||
"iam:ListInstanceProfilesForRole",
|
||||
"iam:ListPolicies",
|
||||
"iam:ListRoles",
|
||||
"iam:ListRolePolicies",
|
||||
"iam:ListRoleTags",
|
||||
"iam:ListUsers",
|
||||
"iam:ListAccountAliases"
|
||||
],
|
||||
"Resource": "*",
|
||||
"Effect": "Allow",
|
||||
"Sid": "AllowReadOnlyIAMUse"
|
||||
},
|
||||
{
|
||||
"Action": [
|
||||
"iam:CreatePolicy",
|
||||
"iam:ListPolicyVersions",
|
||||
"iam:ListEntitiesForPolicy",
|
||||
"iam:DeletePolicy"
|
||||
],
|
||||
"Resource": "arn:aws:iam::{{ aws_account }}:policy/ansible-test-*",
|
||||
"Effect": "Allow",
|
||||
"Sid": "AllowManagementOfSpecificPolicies"
|
||||
},
|
||||
{
|
||||
"Action": [
|
||||
"iam:AttachRolePolicy",
|
||||
"iam:CreateRole",
|
||||
"iam:DeleteRole",
|
||||
"iam:DeleteRolePolicy",
|
||||
"iam:DeleteRolePermissionsBoundary",
|
||||
"iam:DetachRolePolicy",
|
||||
"iam:PutRolePolicy",
|
||||
"iam:PassRole",
|
||||
"iam:PutRolePolicy",
|
||||
"iam:PutRolePermissionsBoundary",
|
||||
"iam:TagRole",
|
||||
"iam:UntagRole",
|
||||
"iam:UpdateAssumeRolePolicy",
|
||||
"iam:UpdateRole",
|
||||
"iam:UpdateRoleDescription",
|
||||
"sts:AssumeRole"
|
||||
],
|
||||
"Resource": "arn:aws:iam::{{ aws_account }}:role/ansible-test-*",
|
||||
"Effect": "Allow",
|
||||
"Sid": "AllowUpdateOfSpecificRoles"
|
||||
},
|
||||
{
|
||||
"Action": [
|
||||
"iam:CreateInstanceProfile",
|
||||
"iam:DeleteInstanceProfile",
|
||||
"iam:AddRoleToInstanceProfile",
|
||||
"iam:RemoveRoleFromInstanceProfile"
|
||||
],
|
||||
"Resource": "arn:aws:iam::{{ aws_account }}:instance-profile/ansible-test-*",
|
||||
"Effect": "Allow",
|
||||
"Sid": "AllowUpdateOfSpecificInstanceProfiles"
|
||||
},
|
||||
{
|
||||
"Action": [
|
||||
"ec2:ReplaceIamInstanceProfileAssociation"
|
||||
],
|
||||
"Resource": "*",
|
||||
"Condition": {
|
||||
"ArnEquals": {
|
||||
"ec2:InstanceProfile": "arn:aws:iam::{{ aws_account }}:instance-profile/ansible-test-*"
|
||||
}
|
||||
},
|
||||
"Effect": "Allow",
|
||||
"Sid": "AllowReplacementOfSpecificInstanceProfiles"
|
||||
},
|
||||
{
|
||||
"Sid": "AllowWAFusage",
|
||||
"Action": "waf:*",
|
||||
"Effect": "Allow",
|
||||
"Resource": "*"
|
||||
},
|
||||
{
|
||||
"Sid": "AllowListingCloudwatchLogs",
|
||||
"Effect": "Allow",
|
||||
"Action": [
|
||||
"logs:DescribeLogGroups"
|
||||
],
|
||||
"Resource": [
|
||||
"arn:aws:logs:{{aws_region}}:{{aws_account}}:log-group:*"
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sid": "AllowModifyingCloudtrail",
|
||||
"Effect": "Allow",
|
||||
"Action": [
|
||||
"cloudtrail:*"
|
||||
],
|
||||
"Resource": [
|
||||
"arn:aws:cloudtrail:{{aws_region}}:{{aws_account}}:trail/ansible-test-*"
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sid": "AllowDescribingCloudtrails",
|
||||
"Effect": "Allow",
|
||||
"Action": [
|
||||
"cloudtrail:DescribeTrails",
|
||||
"cloudtrail:ListTags",
|
||||
"cloudtrail:ListPublicKeys"
|
||||
],
|
||||
"Resource": [
|
||||
"*"
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sid": "AllowModifyingCloudwatchLogs",
|
||||
"Effect": "Allow",
|
||||
"Action": [
|
||||
"logs:CreateLogGroup",
|
||||
"logs:PutRetentionPolicy",
|
||||
"logs:DeleteLogGroup"
|
||||
],
|
||||
"Resource": [
|
||||
"arn:aws:logs:{{aws_region}}:{{aws_account}}:log-group:ansible-test*"
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sid": "AllowAccessToUnspecifiedKMSResources",
|
||||
"Effect": "Allow",
|
||||
"Action": [
|
||||
"kms:CancelKeyDeletion",
|
||||
"kms:CreateAlias",
|
||||
"kms:CreateGrant",
|
||||
"kms:CreateKey",
|
||||
"kms:DeleteAlias",
|
||||
"kms:Describe*",
|
||||
"kms:DisableKey",
|
||||
"kms:EnableKey",
|
||||
"kms:GenerateRandom",
|
||||
"kms:Get*",
|
||||
"kms:List*",
|
||||
"kms:PutKeyPolicy",
|
||||
"kms:RetireGrant",
|
||||
"kms:ScheduleKeyDeletion",
|
||||
"kms:TagResource",
|
||||
"kms:UntagResource",
|
||||
"kms:UpdateGrant",
|
||||
"kms:UpdateKeyDescription"
|
||||
],
|
||||
"Resource": "*"
|
||||
},
|
||||
{
|
||||
"Sid": "AllowAccessToServerCertificates",
|
||||
"Effect": "Allow",
|
||||
"Action": [
|
||||
"iam:*ServerCertificates",
|
||||
"iam:*ServerCertificate"
|
||||
],
|
||||
"Resource": "*"
|
||||
},
|
||||
{
|
||||
"Sid": "AllowAccessToSecrets",
|
||||
"Effect": "Allow",
|
||||
"Action": [
|
||||
"secretsmanager:*"
|
||||
],
|
||||
"Resource": "arn:aws:secretsmanager:{{aws_region}}:{{aws_account}}:secret:ansible-test*"
|
||||
},
|
||||
{
|
||||
"Sid": "AllowAccessToManagePasswordPolicy",
|
||||
"Effect": "Allow",
|
||||
"Action": [
|
||||
"iam:*AccountPasswordPolicy"
|
||||
],
|
||||
"Resource": "*"
|
||||
},
|
||||
{
|
||||
"Sid": "AllowAccessToManageUsersAndGroups",
|
||||
"Effect": "Allow",
|
||||
"Action": [
|
||||
"iam:*Group",
|
||||
"iam:*User",
|
||||
"iam:ListAttachedGroupPolicies"
|
||||
],
|
||||
"Resource": [
|
||||
"arn:aws:iam::{{ aws_account }}:user/ansible-test*",
|
||||
"arn:aws:iam::{{ aws_account }}:group/ansible-test*"
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sid": "AllowAccessToACMRestrictable",
|
||||
"Effect": "Allow",
|
||||
"Action": [
|
||||
"acm:ImportCertificate",
|
||||
"acm:DescribeCertificate",
|
||||
"acm:GetCertificate",
|
||||
"acm:AddTagsToCertificate",
|
||||
"acm:DeleteCertificate"
|
||||
],
|
||||
"Resource": [
|
||||
"arn:aws:acm:{{aws_region}}:{{aws_account}}:certificate/*"
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sid": "AllowAccessToACMUnrestrictable",
|
||||
"Effect": "Allow",
|
||||
"Action": [
|
||||
"acm:ListCertificates",
|
||||
"acm:ListTagsForCertificate"
|
||||
],
|
||||
"Resource": [
|
||||
"*"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -1,54 +0,0 @@
|
|||
{
|
||||
"Version": "2012-10-17",
|
||||
"Statement": [
|
||||
{
|
||||
"Sid": "AllowS3AnsibleTestBuckets",
|
||||
"Action": [
|
||||
"s3:CreateBucket",
|
||||
"s3:Delete*",
|
||||
"s3:GetBucketAcl",
|
||||
"s3:GetBucketLogging",
|
||||
"s3:GetBucketNotification",
|
||||
"s3:GetBucketPolicy",
|
||||
"s3:GetBucketRequestPayment",
|
||||
"s3:GetBucketTagging",
|
||||
"s3:GetBucketVersioning",
|
||||
"s3:GetEncryptionConfiguration",
|
||||
"s3:GetObject",
|
||||
"s3:HeadBucket",
|
||||
"s3:List*",
|
||||
"s3:PutBucketAcl",
|
||||
"s3:PutBucketLogging",
|
||||
"s3:PutBucketNotification",
|
||||
"s3:PutBucketPolicy",
|
||||
"s3:PutBucketRequestPayment",
|
||||
"s3:PutBucketTagging",
|
||||
"s3:PutBucketVersioning",
|
||||
"s3:PutEncryptionConfiguration",
|
||||
"s3:PutObject",
|
||||
"s3:PutObjectAcl"
|
||||
],
|
||||
"Effect": "Allow",
|
||||
"Resource": [
|
||||
"arn:aws:s3:::ansible-test-*",
|
||||
"arn:aws:s3:::ansible-test-*/*"
|
||||
]
|
||||
},
|
||||
{
|
||||
"Sid": "AllowListingS3Buckets",
|
||||
"Action": [
|
||||
"s3:ListAllMyBuckets"
|
||||
],
|
||||
"Effect": "Allow",
|
||||
"Resource": "*"
|
||||
},
|
||||
{
|
||||
"Sid": "ManageEFS",
|
||||
"Effect": "Allow",
|
||||
"Action": [
|
||||
"elasticfilesystem:*"
|
||||
],
|
||||
"Resource": "*"
|
||||
}
|
||||
]
|
||||
}
|
Loading…
Reference in a new issue