|
@@ -10,26 +10,26 @@ resource "aws_iam_instance_profile" "default_instance_profile" {
|
|
|
role = aws_iam_role.default_instance_role.name
|
|
|
}
|
|
|
|
|
|
+data "aws_iam_policy_document" "default_instance_role" {
|
|
|
+ statement {
|
|
|
+ sid = "AssumeRoleAnywhere"
|
|
|
+ effect = "Allow"
|
|
|
+ actions = ["sts:AssumeRole"]
|
|
|
+
|
|
|
+ principals {
|
|
|
+ type = "Service"
|
|
|
+
|
|
|
+ identifiers = [
|
|
|
+ "ec2.amazonaws.com",
|
|
|
+ "ssm.amazonaws.com",
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
resource "aws_iam_role" "default_instance_role" {
|
|
|
name = "msoc-default-instance-role"
|
|
|
- assume_role_policy = <<EOF
|
|
|
-{
|
|
|
- "Version": "2012-10-17",
|
|
|
- "Statement": [
|
|
|
- {
|
|
|
- "Sid": "AssumeRoleAnywhere",
|
|
|
- "Effect": "Allow",
|
|
|
- "Principal": {
|
|
|
- "Service": [
|
|
|
- "ec2.amazonaws.com",
|
|
|
- "ssm.amazonaws.com"
|
|
|
- ]
|
|
|
- },
|
|
|
- "Action": "sts:AssumeRole"
|
|
|
- }
|
|
|
- ]
|
|
|
- }
|
|
|
-EOF
|
|
|
+ assume_role_policy = data.aws_iam_policy_document.default_instance_role.json
|
|
|
}
|
|
|
|
|
|
data "aws_iam_policy_document" "default_instance_policy_doc" {
|
|
@@ -241,107 +241,102 @@ locals {
|
|
|
trusted_principals = var.aws_partition == "aws" ? local.trusted_principals_commercial : local.trusted_principals_govcloud
|
|
|
}
|
|
|
|
|
|
+data "aws_iam_policy_document" "splunk_addon_for_aws_assume_role" {
|
|
|
+ statement {
|
|
|
+ sid = ""
|
|
|
+ effect = "Allow"
|
|
|
+ actions = ["sts:AssumeRole"]
|
|
|
+
|
|
|
+ principals {
|
|
|
+ type = "AWS"
|
|
|
+ identifiers = local.trusted_principals
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
|
|
|
resource "aws_iam_role" "splunk_addon_for_aws" {
|
|
|
name = "splunk-addon-for-aws"
|
|
|
path = "/instance/"
|
|
|
|
|
|
- assume_role_policy = <<EOF
|
|
|
-{
|
|
|
- "Version": "2012-10-17",
|
|
|
- "Statement": [
|
|
|
- {
|
|
|
- "Sid": "",
|
|
|
- "Effect": "Allow",
|
|
|
- "Principal": {
|
|
|
- "AWS": ${jsonencode(local.trusted_principals)}
|
|
|
- },
|
|
|
- "Action": "sts:AssumeRole"
|
|
|
- }
|
|
|
- ]
|
|
|
+ assume_role_policy = data.aws_iam_policy_document.splunk_addon_for_aws_assume_role.json
|
|
|
}
|
|
|
-EOF
|
|
|
+
|
|
|
+data "aws_iam_policy_document" "policy" {
|
|
|
+ statement {
|
|
|
+ sid = ""
|
|
|
+ effect = "Allow"
|
|
|
+ resources = ["*"]
|
|
|
+
|
|
|
+ actions = [
|
|
|
+ "sqs:GetQueueAttributes",
|
|
|
+ "sqs:ListQueues",
|
|
|
+ "sqs:ReceiveMessage",
|
|
|
+ "sqs:GetQueueUrl",
|
|
|
+ "sqs:SendMessage",
|
|
|
+ "sqs:DeleteMessage",
|
|
|
+ "s3:ListBucket",
|
|
|
+ "s3:GetObject",
|
|
|
+ "s3:GetBucketLocation",
|
|
|
+ "s3:ListAllMyBuckets",
|
|
|
+ "s3:GetBucketTagging",
|
|
|
+ "s3:GetAccelerateConfiguration",
|
|
|
+ "s3:GetBucketLogging",
|
|
|
+ "s3:GetLifecycleConfiguration",
|
|
|
+ "s3:GetBucketCORS",
|
|
|
+ "config:DeliverConfigSnapshot",
|
|
|
+ "config:DescribeConfigRules",
|
|
|
+ "config:DescribeConfigRuleEvaluationStatus",
|
|
|
+ "config:GetComplianceDetailsByConfigRule",
|
|
|
+ "config:GetComplianceSummaryByConfigRule",
|
|
|
+ "iam:GetUser",
|
|
|
+ "iam:ListUsers",
|
|
|
+ "iam:GetAccountPasswordPolicy",
|
|
|
+ "iam:ListAccessKeys",
|
|
|
+ "iam:GetAccessKeyLastUsed",
|
|
|
+ "autoscaling:Describe*",
|
|
|
+ "cloudwatch:Describe*",
|
|
|
+ "cloudwatch:Get*",
|
|
|
+ "cloudwatch:List*",
|
|
|
+ "sns:Get*",
|
|
|
+ "sns:List*",
|
|
|
+ "sns:Publish",
|
|
|
+ "logs:DescribeLogGroups",
|
|
|
+ "logs:DescribeLogStreams",
|
|
|
+ "logs:GetLogEvents",
|
|
|
+ "ec2:DescribeInstances",
|
|
|
+ "ec2:DescribeReservedInstances",
|
|
|
+ "ec2:DescribeSnapshots",
|
|
|
+ "ec2:DescribeRegions",
|
|
|
+ "ec2:DescribeKeyPairs",
|
|
|
+ "ec2:DescribeNetworkAcls",
|
|
|
+ "ec2:DescribeSecurityGroups",
|
|
|
+ "ec2:DescribeSubnets",
|
|
|
+ "ec2:DescribeVolumes",
|
|
|
+ "ec2:DescribeVpcs",
|
|
|
+ "ec2:DescribeImages",
|
|
|
+ "ec2:DescribeAddresses",
|
|
|
+ "lambda:ListFunctions",
|
|
|
+ "rds:DescribeDBInstances",
|
|
|
+ "cloudfront:ListDistributions",
|
|
|
+ "elasticloadbalancing:DescribeLoadBalancers",
|
|
|
+ "elasticloadbalancing:DescribeInstanceHealth",
|
|
|
+ "elasticloadbalancing:DescribeTags",
|
|
|
+ "elasticloadbalancing:DescribeTargetGroups",
|
|
|
+ "elasticloadbalancing:DescribeTargetHealth",
|
|
|
+ "elasticloadbalancing:DescribeListeners",
|
|
|
+ "inspector:Describe*",
|
|
|
+ "inspector:List*",
|
|
|
+ "kinesis:Get*",
|
|
|
+ "kinesis:DescribeStream",
|
|
|
+ "kinesis:ListStreams",
|
|
|
+ "kms:Decrypt",
|
|
|
+ "sts:AssumeRole",
|
|
|
+ ]
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
resource "aws_iam_role_policy" "splunk_addon_for_aws" {
|
|
|
name = "splunk-addon-for-aws"
|
|
|
role = aws_iam_role.splunk_addon_for_aws.id
|
|
|
- policy = <<EOF
|
|
|
-{
|
|
|
- "Version": "2012-10-17",
|
|
|
- "Statement": [
|
|
|
- {
|
|
|
- "Effect": "Allow",
|
|
|
- "Action": [
|
|
|
- "sqs:GetQueueAttributes",
|
|
|
- "sqs:ListQueues",
|
|
|
- "sqs:ReceiveMessage",
|
|
|
- "sqs:GetQueueUrl",
|
|
|
- "sqs:SendMessage",
|
|
|
- "sqs:DeleteMessage",
|
|
|
- "s3:ListBucket",
|
|
|
- "s3:GetObject",
|
|
|
- "s3:GetBucketLocation",
|
|
|
- "s3:ListAllMyBuckets",
|
|
|
- "s3:GetBucketTagging",
|
|
|
- "s3:GetAccelerateConfiguration",
|
|
|
- "s3:GetBucketLogging",
|
|
|
- "s3:GetLifecycleConfiguration",
|
|
|
- "s3:GetBucketCORS",
|
|
|
- "config:DeliverConfigSnapshot",
|
|
|
- "config:DescribeConfigRules",
|
|
|
- "config:DescribeConfigRuleEvaluationStatus",
|
|
|
- "config:GetComplianceDetailsByConfigRule",
|
|
|
- "config:GetComplianceSummaryByConfigRule",
|
|
|
- "iam:GetUser",
|
|
|
- "iam:ListUsers",
|
|
|
- "iam:GetAccountPasswordPolicy",
|
|
|
- "iam:ListAccessKeys",
|
|
|
- "iam:GetAccessKeyLastUsed",
|
|
|
- "autoscaling:Describe*",
|
|
|
- "cloudwatch:Describe*",
|
|
|
- "cloudwatch:Get*",
|
|
|
- "cloudwatch:List*",
|
|
|
- "sns:Get*",
|
|
|
- "sns:List*",
|
|
|
- "sns:Publish",
|
|
|
- "logs:DescribeLogGroups",
|
|
|
- "logs:DescribeLogStreams",
|
|
|
- "logs:GetLogEvents",
|
|
|
- "ec2:DescribeInstances",
|
|
|
- "ec2:DescribeReservedInstances",
|
|
|
- "ec2:DescribeSnapshots",
|
|
|
- "ec2:DescribeRegions",
|
|
|
- "ec2:DescribeKeyPairs",
|
|
|
- "ec2:DescribeNetworkAcls",
|
|
|
- "ec2:DescribeSecurityGroups",
|
|
|
- "ec2:DescribeSubnets",
|
|
|
- "ec2:DescribeVolumes",
|
|
|
- "ec2:DescribeVpcs",
|
|
|
- "ec2:DescribeImages",
|
|
|
- "ec2:DescribeAddresses",
|
|
|
- "lambda:ListFunctions",
|
|
|
- "rds:DescribeDBInstances",
|
|
|
- "cloudfront:ListDistributions",
|
|
|
- "elasticloadbalancing:DescribeLoadBalancers",
|
|
|
- "elasticloadbalancing:DescribeInstanceHealth",
|
|
|
- "elasticloadbalancing:DescribeTags",
|
|
|
- "elasticloadbalancing:DescribeTargetGroups",
|
|
|
- "elasticloadbalancing:DescribeTargetHealth",
|
|
|
- "elasticloadbalancing:DescribeListeners",
|
|
|
- "inspector:Describe*",
|
|
|
- "inspector:List*",
|
|
|
- "kinesis:Get*",
|
|
|
- "kinesis:DescribeStream",
|
|
|
- "kinesis:ListStreams",
|
|
|
- "kms:Decrypt",
|
|
|
- "sts:AssumeRole"
|
|
|
- ],
|
|
|
- "Resource": [
|
|
|
- "*"
|
|
|
- ]
|
|
|
- }
|
|
|
- ]
|
|
|
-}
|
|
|
-EOF
|
|
|
+ policy = data.aws_iam_policy_document.policy.json
|
|
|
}
|