What MarshalCloud can touch, said plainly.Read-only to connect
Read role
Describe, list and get. Cannot change anything.
MarshalCloud reads
Billing, resources, security settings, uptime.
Draft
One allowlisted fix, undo stated plainly.
You approveWaits for you
Or you never install the fix role at all.
Fix role acts
Only that action, only those permissions, logged.
Revoke
Delete the stack. Access ends at once.
The read role, exactly as shipped
These are the two policies the connect template creates in your account for MarshalReadRole. The Ref and Fn:: entries are filled in by CloudFormation when you create the stack: your External ID, your billing bucket.
Who may use the role
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": {
"Ref": "MarshalRoleArn"
}
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": {
"Ref": "ExternalId"
}
}
}
}
]
}What it may do: 205 allowed actions
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "CostData",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:ListBucket"
],
"Resource": [
{
"Fn::GetAtt": [
"CostExportBucket",
"Arn"
]
},
{
"Fn::Sub": "${CostExportBucket.Arn}/*"
}
]
},
{
"Sid": "CostApis",
"Effect": "Allow",
"Action": [
"ce:Get*",
"compute-optimizer:Get*",
"cost-optimization-hub:ListRecommendations",
"cost-optimization-hub:GetRecommendation",
"cost-optimization-hub:ListEnrollmentStatuses",
"trustedadvisor:ListRecommendations",
"trustedadvisor:GetRecommendation",
"servicequotas:ListServiceQuotas",
"pricing:Get*",
"savingsplans:DescribeSavingsPlans",
"budgets:ViewBudget",
"budgets:DescribeBudgets",
"rds:DescribeReservedDBInstances",
"elasticache:DescribeReservedCacheNodes",
"invoicing:ListInvoiceSummaries",
"freetier:GetFreeTierUsage"
],
"Resource": "*"
},
{
"Sid": "StorageCleanupRead",
"Effect": "Allow",
"Action": [
"s3:GetLifecycleConfiguration",
"s3:ListBucketMultipartUploads",
"s3:ListMultipartUploadParts"
],
"Resource": "*"
},
{
"Sid": "BucketOpennessRead",
"Effect": "Allow",
"Action": [
"s3:GetBucketAcl",
"s3:GetBucketPolicy",
"s3:GetBucketPolicyStatus",
"s3:GetBucketEncryption"
],
"Resource": "*"
},
{
"Sid": "InventoryRead",
"Effect": "Allow",
"Action": [
"ec2:Describe*",
"elasticloadbalancing:Describe*",
"emr:ListClusters",
"opensearch:ListDomainNames",
"opensearch:DescribeDomain",
"rds:Describe*",
"lambda:List*",
"lambda:GetFunctionConcurrency",
"lambda:GetAccountSettings",
"s3:ListAllMyBuckets",
"s3:GetBucketLocation",
"s3:GetBucketPublicAccessBlock",
"s3:GetBucketTagging",
"eks:List*",
"eks:Describe*",
"ecs:List*",
"ecs:Describe*",
"cloudfront:ListDistributions",
"dynamodb:ListTables",
"dynamodb:DescribeTable",
"dynamodb:DescribeContinuousBackups",
"s3:GetBucketVersioning",
"route53:ListHealthChecks",
"route53:GetHealthCheckStatus",
"es:ListDomainNames",
"es:DescribeDomain",
"fsx:DescribeFileSystems",
"kafka:ListClustersV2",
"sagemaker:ListEndpoints",
"sagemaker:ListNotebookInstances",
"glue:ListJobs",
"elasticmapreduce:ListClusters",
"elasticbeanstalk:DescribeEnvironments",
"workspaces:DescribeWorkspaces",
"directconnect:DescribeConnections",
"transfer:ListServers",
"ecr:DescribeRepositories",
"codepipeline:ListPipelines",
"backup:List*",
"backup:ListBackupPlans",
"backup:ListBackupSelections",
"backup:GetBackupPlan",
"backup:GetBackupSelection",
"backup:ListBackupVaults",
"backup:ListRecoveryPointsByBackupVault",
"backup:ListRecoveryPointsByResource",
"rds:DescribeDBSnapshots",
"rds:DescribeDBClusterSnapshots",
"sqs:ListQueues",
"sqs:GetQueueAttributes",
"sns:ListTopics",
"elasticache:DescribeCacheClusters",
"elasticache:ListAllowedNodeTypeModifications",
"apigateway:GET",
"elasticfilesystem:DescribeFileSystems",
"route53:ListHostedZones",
"redshift:DescribeClusters",
"kinesis:ListStreams",
"states:ListStateMachines",
"cloudwatch:GetMetricData",
"cloudwatch:ListMetrics",
"config:DescribeConfigurationRecorders",
"config:DescribeConfigurationRecorderStatus",
"config:DescribeDeliveryChannels",
"cloudwatch:DescribeAlarms",
"lightsail:GetInstances",
"cloudtrail:LookupEvents",
"iam:ListAccountAliases",
"lightsail:GetInstances",
"autoscaling:DescribeAutoScalingGroups",
"autoscaling:DescribeLaunchConfigurations",
"acm:ListCertificates",
"acm:DescribeCertificate",
"secretsmanager:ListSecrets",
"organizations:ListAccounts",
"organizations:DescribeOrganization"
],
"Resource": "*"
},
{
"Sid": "SecurityPostureRead",
"Effect": "Allow",
"Action": [
"iam:GetAccountSummary",
"iam:GetCredentialReport",
"iam:GenerateCredentialReport",
"iam:GetAccountPasswordPolicy",
"iam:ListUsers",
"iam:ListMFADevices",
"iam:ListAccessKeys",
"iam:ListAttachedUserPolicies",
"iam:ListUserPolicies",
"iam:GetUserPolicy",
"iam:ListGroups",
"iam:ListGroupsForUser",
"iam:ListGroupPolicies",
"iam:GetGroupPolicy",
"iam:ListAttachedGroupPolicies",
"iam:GetPolicy",
"iam:GetPolicyVersion",
"cloudtrail:DescribeTrails",
"cloudtrail:GetTrailStatus",
"cloudtrail:GetEventSelectors",
"s3:GetEncryptionConfiguration",
"s3:GetBucketLogging",
"kms:ListKeys",
"kms:DescribeKey",
"kms:GetKeyRotationStatus",
"kms:ListAliases",
"ec2:GetEbsEncryptionByDefault",
"s3:GetAccountPublicAccessBlock",
"rds:DescribeDBSnapshots",
"rds:DescribeDBSnapshotAttributes",
"iam:ListAccountAliases"
],
"Resource": "*"
},
{
"Sid": "AlarmCoverageRead",
"Effect": "Allow",
"Action": [
"logs:DescribeLogGroups",
"logs:DescribeMetricFilters",
"cloudwatch:DescribeAlarms",
"sns:ListSubscriptionsByTopic"
],
"Resource": "*"
},
{
"Sid": "ProviderScannerRead",
"Effect": "Allow",
"Action": [
"inspector2:BatchGetAccountStatus",
"inspector2:ListFindings",
"inspector2:ListCoverage",
"securityhub:DescribeHub",
"securityhub:GetFindings",
"guardduty:ListDetectors",
"guardduty:GetDetector",
"guardduty:ListFindings",
"guardduty:GetFindings",
"guardduty:ListCoverage"
],
"Resource": "*"
},
{
"Sid": "WafRead",
"Effect": "Allow",
"Action": [
"wafv2:ListWebACLs",
"wafv2:GetWebACL",
"wafv2:GetSampledRequests",
"wafv2:ListResourcesForWebACL"
],
"Resource": "*"
},
{
"Sid": "AiWorkloadRead",
"Effect": "Allow",
"Action": [
"bedrock:ListCustomModels",
"bedrock:ListProvisionedModelThroughputs",
"bedrock:ListGuardrails",
"bedrock:GetModelInvocationLoggingConfiguration"
],
"Resource": "*"
},
{
"Sid": "DataSecurityRead",
"Effect": "Allow",
"Action": [
"macie2:GetMacieSession",
"macie2:ListFindings",
"macie2:GetFindings"
],
"Resource": "*"
},
{
"Sid": "IamInsightsRead",
"Effect": "Allow",
"Action": [
"access-analyzer:ListAnalyzers",
"access-analyzer:ListFindings",
"iam:GenerateServiceLastAccessedDetails",
"iam:GetServiceLastAccessedDetails"
],
"Resource": "*"
},
{
"Sid": "DatabaseInsightsRead",
"Effect": "Allow",
"Action": [
"pi:DescribeDimensionKeys",
"elasticache:DescribeReplicationGroups",
"elasticache:DescribeCacheParameters",
"elasticache:DescribeEvents",
"dynamodb:DescribeTimeToLive",
"dynamodb:ListTagsOfResource",
"redshift:DescribeClusterParameters",
"redshift:DescribeClusterSnapshots",
"redshift:DescribeLoggingStatus",
"es:DescribeDomainConfig"
],
"Resource": "*"
},
{
"Sid": "ServiceDetailRead",
"Effect": "Allow",
"Action": [
"autoscaling:DescribePolicies",
"autoscaling:DescribeScalingActivities",
"lambda:GetPolicy",
"ecr:DescribeImages",
"ecr:GetLifecyclePolicy",
"cloudfront:GetDistribution",
"route53:GetHostedZone",
"route53:ListResourceRecordSets",
"elasticfilesystem:DescribeMountTargets",
"elasticfilesystem:DescribeBackupPolicy",
"elasticfilesystem:DescribeLifecycleConfiguration",
"fsx:DescribeBackups",
"sqs:ListDeadLetterSourceQueues",
"sns:GetTopicAttributes",
"kinesis:DescribeStreamSummary",
"kinesis:ListShards",
"kinesis:ListStreamConsumers",
"kafka:DescribeClusterV2",
"kafka:ListNodes",
"elasticmapreduce:DescribeCluster",
"elasticmapreduce:ListInstanceGroups",
"elasticmapreduce:ListSteps",
"glue:GetJob",
"glue:GetJobRuns",
"states:DescribeStateMachine",
"states:ListExecutions",
"secretsmanager:DescribeSecret",
"iam:GetUser",
"iam:GetAccessKeyLastUsed"
],
"Resource": "*"
},
{
"Sid": "DatabaseInsightsNoQueryText",
"Effect": "Deny",
"Action": [
"pi:DescribeDimensionKeys",
"pi:GetDimensionKeyDetails",
"pi:GetResourceMetrics"
],
"Resource": "*",
"Condition": {
"ForAnyValue:StringEquals": {
"pi:Dimensions": [
"db.sql.statement",
"db.sql_tokenized.statement"
]
}
}
},
{
"Sid": "HealthRead",
"Effect": "Allow",
"Action": [
"health:DescribeEvents",
"health:DescribeEventDetails",
"health:DescribeAffectedEntities"
],
"Resource": "*"
},
{
"Sid": "IamGraphRead",
"Effect": "Allow",
"Action": [
"iam:ListRoles",
"iam:ListAttachedRolePolicies",
"iam:ListRolePolicies",
"iam:GetRolePolicy",
"iam:ListInstanceProfiles",
"iam:GetPolicy",
"iam:GetPolicyVersion",
"iam:GetRole"
],
"Resource": "*"
}
]
}Found something? Tell us.
Report a vulnerability with the form or by email. A person reads every report.





