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. |