Permissions in cross-account IAM roles
This article lists permissions in the cross-account IAM role and the purpose of each role.
The permissions are different based on how you configure your VPC.
IAM permissions for Databricks-managed VPCs
Databricks requires the following list of IAM permissions to operate and manage clusters in an effective manner. This configuration applies only to workspaces that use the default (Databricks-managed) VPC. To create the AWS cross-account role policy for use with the default Databricks-managed VPC, see Create an IAM role for workspace deployment.
The following table lists Databricks IAM cross-account role permissions in the default configuration, the resources that they control, and the purpose for each permission.
AWS IAM permission  | AWS resource  | Purpose  | 
|---|---|---|
  | Elastic IP address  | Allocates an Elastic IP that is associated with the NAT Gateway used in secure cluster connectivity  | 
  | Network Interface  | Assigns a private IP to EC2 instance.  | 
  | DHCP  | Associates a set of DHCP options (or no DHCP options) with a VPC.  | 
  | InstanceProfile  | Associate an instance profile with a running EC2 instance. This allows a Databricks pool instance to be used by clusters with different instance profiles throughout its lifetime in the pool.  | 
  | RouteTable  | Associates a subnet with a route table.  | 
  | InternetGateway  | Attaches an Internet gateway to a VPC, enabling connectivity between the Internet and the VPC. This is currently required to connect to S3 buckets and update code for the workers and spark containers.  | 
  | EBS Volume  | Attaches volume for EBS auto-scaling.  | 
  | SecurityGroup  | Adds egress rules to the security groups if required.  | 
  | SecurityGroup  | Adds ingress rules to the security groups.  | 
  | SpotInstance  | Cancels spot instances.  | 
  | Dhcp  | Creates DHCP options.  | 
  | EC2 Fleet  | Creates an EC2 fleet (used with Databricks fleet clusters).  | 
  | InternetGateway  | Creates an Internet Gateway.  | 
  | Launch Template  | Creates a launch template (used with Databricks fleet clusters).  | 
  | Launch Template  | Creates a launch template version (used with Databricks fleet clusters).  | 
  | NatGateway  | Creates a NAT gateway.  | 
  | Route  | Creates routes during workspace setup.  | 
  | RouteTable  | Creates routes during workspace setup.  | 
  | SecurityGroup  | Creates security groups during initial setup  | 
  | Subnet  | Create subnets for the VPC during workspace setup.  | 
  | Tags  | Adds tags on Databricks resources.  | 
  | EBS Volume  | Creates volume.  | 
  | VPC  | Creates the Databricks-managed VPC.  | 
  | VPCEndpoint  | Creates VPC endpoints as part of configuring the VPC.  | 
  | DHCPOptions  | Deletes DHCPOptions  | 
  | EC2 Fleet  | Deletes an EC2 fleet (used with Databricks fleet clusters)  | 
  | InternetGateway  | Deletes Internet Gateway during workspace deletion.  | 
  | Launch Template  | Deletes a launch template and all its versions.  | 
  | Launch Template  | Deletes a version from a launch template (used with Databricks fleet clusters).  | 
  | NatGateway  | Deletes NAT gateway as needed to setup the secure cluster connectivity relay.  | 
  | Route  | Deletes routes.  | 
  | RouteTable  | Deletes route table.  | 
  | SecurityGroup  | Deletes security groups during workspace deletion.  | 
  | Subnet  | Deletes subnet.  | 
  | Tags  | Removes tags from cluster resources to allows Databricks pool instances to be reused by clusters with different tags.  | 
  | EBS Volume  | Deletes a volume for EBS auto-scaling. See this page.  | 
  | VPC  | Deletes the VPC when customers during workspace deletion.  | 
  | VPCEndpoints  | Deletes the VPC endpoints during workspace deletion.  | 
  | AvailabilityZones  | Gets a list of Availability Zones in a region so that Databricks can deploy resources in that zone.  | 
  | EC2 Fleet  | Lists events in an EC2 fleet (used with Databricks fleet clusters).  | 
  | EC2 Fleet  | Lists instances in an EC2 fleet (used with Databricks fleet clusters).  | 
  | EC2 Fleet  | Describes details of an EC2 fleet (used with Databricks fleet clusters).  | 
  | InstanceProfile  | Checks the current instance profile that is set on an EC2 instance so that the right profile is set on a Databricks pool instance before it's reused by a cluster.  | 
  | Instance  | Confirms that Databricks AWS instances are healthy.  | 
  | Instance  | Confirms that Databricks AWS instances are healthy.  | 
  | InternetGateway  | Describes InternetGateway to confirm that Databricks AWS instances have a route to the internet.  | 
  | Launch Template  | Deletes a launch template (used with Databricks fleet clusters).  | 
  | Launch Template  | Describes details of launch template versions (used with Databricks fleet clusters).  | 
  | NATGateway  | Describes a NAT Gateway to confirm that Databricks AWS instances have a route to the internet in the secure cluster connectivity architecture.  | 
  | PrefixList  | Creates a prefix list ID to create an outbound security group rule that allows traffic from a VPC so that Databricks can access an AWS service through a gateway VPC endpoint.  | 
  | Instance  | Describes Reserved Instance pricing in support of AWS spot instance pricing.  | 
  | RouteTable  | Confirms that the route tables are set up correctly in the Databricks-managed VPC.  | 
  | SecurityGroup  | Confirms that AWS security groups are set up correctly.  | 
  | Instance  | Describes spot instances.  | 
  | SpotInstance  | Describes spot instances.  | 
  | Subnet  | Confirms that subnets are setup correctly in Databricks VPC.  | 
  | Volume  | Lists volumes.  | 
  | VPC  | Confirm that the workspace's VPC was set up correctly.  | 
  | InternetGateway  | Detaches the Databricks created Internet Gateway during workspace deletion.  | 
  | InstanceProfile  | Disassociates an instance profile from an EC2 instance so that xDatabricks pool instances can be used by clusters with different instance profiles.  | 
  | RouteTable  | Detaches the Databricks created route table during workspace deletion.  | 
  | Launch Templates  | Gets config of a launch template (used with Databricks fleet clusters).  | 
  | Availability Zones  | Gets list of AZs with best spot capacity for given instance type(s).  | 
  | EC2 Fleet  | Modifies an EC2 fleet (used with Databricks fleet clusters).  | 
  | Launch Templates  | Modifies an existing launch template (used with Databricks fleet clusters).  | 
  | VPCAttribute  | Configures the Databricks-managed VPC.  | 
  | Address  | Detach the Databricks created address during workspace deletion.  | 
  | InstanceProfile  | Swaps one instance profile for another on an EC2 instance so that Databricks pool instances can be used by clusters with different instance profiles.  | 
  | SpotInstance  | Requests spot instances.  | 
  | SecurityGroup  | Updates Databricks-managed security groups if required.  | 
  | SecurityGroup  | Updates security groups.  | 
  | Instance  | Launches AWS instances to create Spark Clusters. Also leveraged during scaling up an existing Spark cluster.  | 
  | Instance  | Terminates Spark EC2 nodes during cluster scale down or to terminate a given Spark cluster.  | 
  | ServiceLinkedRole  | Sets up support for spot instances.  | 
  | RolePolicy  | Configures Databricks to use spot instances.  | 
IAM permissions for customer-managed VPC
If you use a customer-managed VPC, there's a smaller set of permissions needed for the cross-account IAM role. This feature requires the Premium plan or above.
To create the AWS cross-account role policy for use with a customer-managed VPC, see Option 2: Customer-managed VPC with default restrictions policy.
The permissions can be scoped down further if needed. To create the AWS cross-account role policy for use with a customer-managed VPC with additional custom restrictions on resources, see Option 3: Customer-managed VPC with custom policy restrictions.
The following table lists Databricks IAM cross-account role permissions for a customer-managed VPC, the resources that they control, and the purpose for each permission.
AWS IAM permission  | AWS resource  | Purpose  | 
|---|---|---|
  | InstanceProfile  | Associates an instance profile with a running EC2 instance so that a Databricks pool instance can be used by clusters with different instance profiles throughout its lifetime in the pool.  | 
  | Volume  | Attaches a volume.  | 
  | SecurityGroup  | Add egress rules to the security groups if required.  | 
  | SecurityGroup  | Adds ingress rules to the security groups.  | 
  | SpotInstance  | Cancels spot instances.  | 
  | EC2 Fleet  | Creates an EC2 fleet (used with Databricks fleet clusters).  | 
  | Launch Template  | Creates a launch template (used with Databricks fleet clusters).  | 
  | Tags  | Adds tags on Databricks resources.  | 
  | Volume  | Creates a volume.  | 
  | EC2 Fleet  | Deletes an EC2 fleet (used with Databricks fleet clusters)  | 
  | Launch Template  | Deletes a launch template and all its versions.  | 
  | Launch Template  | Deletes a version from a launch template (used with Databricks fleet clusters).  | 
  | Tags  | Removes tags from cluster resources so that Databricks pool instances can be reused by clusters with different tags.  | 
  | Volume  | Deletes a volume.  | 
  | AvailabilityZones  | Gets a list of Availability Zones in a region so that Databricks can deploy the resources in that zone.  | 
  | InstanceProfile  | Checks the current instance profile set on an EC2 instance to confirm that the right profile is set on a Databricks pool instance before it's reused by a cluster.  | 
  | Instance  | Confirms that Databricks AWS instances are healthy.  | 
  | Instance  | Confirm that Databricks AWS instances are healthy.  | 
  | InternetGateway  | Describes InternetGateway to confirm that Databricks AWS instances have a route to the internet.  | 
  | EC2 Fleet  | Lists events in an EC2 fleet (used with Databricks fleet clusters).  | 
  | EC2 Fleet  | Lists instances in an EC2 fleet (used with Databricks fleet clusters).  | 
  | EC2 Fleet  | Describes details of an EC2 fleet (used with Databricks fleet clusters).  | 
  | Launch Template  | Deletes a launch template (used with Databricks fleet clusters).  | 
  | Launch Template  | Describes details of launch template versions (used with Databricks fleet clusters).  | 
  | NATGateway  | Describes NATGateway to confirm that Databricks AWS instances have a route to the internet in the secure cluster connectivity architecture.  | 
  | NetworkAcl  | Confirms the correct Network ACL setup.  | 
  | PrefixList  | Gets a list of prefix list IDs to create an outbound security group rule that allows traffic from a VPC to access an AWS service through a gateway VPC endpoint.  | 
  | Instance  | Gets Reserved Instance pricing as the starting point for AWS spot instance pricing.  | 
  | RouteTable  | Confirms that route tables are set up correctly in the VPC.  | 
  | SecurityGroup  | Confirms that AWS security groups are set up correctly.  | 
  | Instance  | Describes spot instance.  | 
  | SpotInstance  | Describes spot instances.  | 
  | Subnet  | Confirms that subnets are setup correctly in the VPC.  | 
  | Volume  | List volumes.  | 
  | VPC  | Describes VPC attributes including but not limited to   | 
  | VPC  | Confirms that the Databricks workspace VPC was created.  | 
  | Volume  | Detaches an EBS volume from EC2 instances during cluster shutdown.  | 
  | InstanceProfile  | Disassociates an instance profile from an EC2 instance so that pool instances can be used by clusters with different instance profiles.  | 
  | Launch Templates  | Gets config of a launch template (used with Databricks fleet clusters).  | 
  | EC2 Fleet  | Modifies an EC2 fleet (used with Databricks fleet clusters).  | 
  | Launch Templates  | Modifies an existing launch template (used with Databricks fleet clusters).  | 
  | InstanceProfile  | Swaps one instance profile for another on an EC2 instance so that pool instances can be used by clusters with different instance profiles.  | 
  | SpotInstance  | Requests spot instances.  | 
  | SecurityGroup  | Updates Databricks-managed security groups if required  | 
  | SecurityGroup  | Updates security groups.  | 
  | Instance  | Launches AWS instances to create Spark Clusters. Also used to scale up an existing Spark cluster.  | 
  | Instance  | Terminates Spark EC2 nodes during cluster scale down or to terminate a Spark cluster.  | 
  | ServiceLinkedRole  | Sets up support for spot instances.  | 
  | RolePolicy  | Configures Databricks to use spot instances.  |