Skip to content

ResourcePolicy

The ResourcePolicy resource lets you manage AWS CloudTrail ResourcePolicys that define access to your CloudTrail resources. Resource policies are important for controlling which AWS accounts or IAM roles can access your CloudTrail logs.

Minimal Example

Create a basic resource policy that allows specific AWS accounts to access CloudTrail logs.

ts
import AWS from "alchemy/aws/control";

const resourcePolicy = await AWS.CloudTrail.ResourcePolicy("basicResourcePolicy", {
  ResourceArn: "arn:aws:cloudtrail:us-east-1:123456789012:trail/MyTrail",
  ResourcePolicy: {
    Version: "2012-10-17",
    Statement: [
      {
        Effect: "Allow",
        Principal: {
          AWS: [
            "arn:aws:iam::111122223333:role/ExampleRole"
          ]
        },
        Action: "cloudtrail:LookupEvents",
        Resource: "*"
      }
    ]
  },
  adopt: false // Default is false; adopt existing resource if true
});

Advanced Configuration

Configure a resource policy that includes multiple principals and additional actions.

ts
const advancedResourcePolicy = await AWS.CloudTrail.ResourcePolicy("advancedResourcePolicy", {
  ResourceArn: "arn:aws:cloudtrail:us-east-1:123456789012:trail/MyTrail",
  ResourcePolicy: {
    Version: "2012-10-17",
    Statement: [
      {
        Effect: "Allow",
        Principal: {
          AWS: [
            "arn:aws:iam::111122223333:role/ExampleRole",
            "arn:aws:iam::444455556666:user/AnotherUser"
          ]
        },
        Action: [
          "cloudtrail:LookupEvents",
          "cloudtrail:GetTrail"
        ],
        Resource: "*",
        Condition: {
          StringEquals: {
            "aws:SourceAccount": "123456789012"
          }
        }
      }
    ]
  }
});

Specific Use Case: Deny Access Based on Conditions

Demonstrate how to deny access to specific actions based on certain conditions.

ts
const denyAccessPolicy = await AWS.CloudTrail.ResourcePolicy("denyAccessPolicy", {
  ResourceArn: "arn:aws:cloudtrail:us-east-1:123456789012:trail/MyTrail",
  ResourcePolicy: {
    Version: "2012-10-17",
    Statement: [
      {
        Effect: "Deny",
        Principal: {
          AWS: "arn:aws:iam::999988887777:role/RestrictedRole"
        },
        Action: "cloudtrail:LookupEvents",
        Resource: "*",
        Condition: {
          StringEquals: {
            "aws:SourceIp": "203.0.113.0/24"
          }
        }
      }
    ]
  }
});