Cross-Account Access in AWS: Resource-Based Policies vs IAM Roles
Resource-Based Policies
Overview
Resource-based policies are attached directly to resources (like S3 buckets, SQS queues, SNS topics) and specify who can access that resource and what they can do.
Example Resource-Based Policy (S3 Bucket)
Best Use Cases
Simple Resource Sharing
When you want to share specific resources with specific accounts
When the resource natively supports resource-based policies
Service-to-Service Access
Lambda accessing S3
CloudWatch Logs sending data to S3
Public Access Requirements
When you need to grant access to anonymous users (like public S3 buckets)
Advantages
No need to switch roles
Direct access without assuming additional credentials
Easier to manage for simple use cases
Works with AWS services that can't assume roles
IAM Roles
Overview
IAM roles are AWS identity types that provide temporary credentials. For cross-account access, users or services from one account can assume a role in another account.
Example Role Trust Policy
Example Role Permission Policy
Best Use Cases
Complex Access Patterns
When users need access to multiple resources
When you need to enforce MFA
When you need session-based access
Application Access
EC2 instances accessing resources in another account
Lambda functions requiring cross-account access
Administrative Access
DevOps teams managing multiple accounts
Security audit teams requiring temporary access
Advantages
More secure (temporary credentials)
Centralized permission management
Supports granular access control
Works with AWS Organizations service control policies (SCPs)
Decision Matrix
Temporary access needed
❌
✅
Multiple resource types
❌
✅
Service-to-service
✅
⚠️
Public access needed
✅
❌
Session control
❌
✅
MFA enforcement
❌
✅
Best Practices
Security
Always use least privilege principle
Use conditions to restrict access (IP, time, MFA)
Regularly audit cross-account access
Organization
Document all cross-account relationships
Use meaningful names and tags
Implement consistent naming conventions
Monitoring
Enable CloudTrail for cross-account activity
Set up alerts for suspicious activities
Regular access pattern reviews
Common Exam Scenarios
Scenario: Multiple Team Access
Multiple teams need access to various resources
Solution: Use IAM roles with specific permission sets
Reasoning: Better access control and audit capabilities
Scenario: S3 Data Sharing
Share specific S3 bucket with partner account
Solution: Use bucket policy (resource-based)
Reasoning: Simpler to manage, direct access
Scenario: DevOps Management
DevOps team managing multiple AWS accounts
Solution: Use IAM roles with Organizations
Reasoning: Centralized control, temporary access
Last updated
Was this helpful?