Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

AWS CostExplorer

LHM LHO Application IAM Role will assume an IAM Role in the Databricks Workspace AWS Account with a permission policy to access Cost Explorer data in that AWS Account Id:

...

Code Block
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::<LHM<LHO_App_Host_AWS_Account_ID>:role/<LHM<LHO_App_IAM_Role>"
            },
            "Action": "sts:AssumeRole",
        }
    ]
}

...

In order to obtain workspace storage and network costs, the LHO should be provided permissions to tag S3 bucket and NAT Gateway associated with the DBXDatabricks workspace:

IAM_Role_Cost_Tag_For_S3_And_NAT permission policy:

Code Block
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "BplmS3TaggingWkspStorageCostPolicy",
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketTagging",
                "s3:PutBucketTagging"
            ],
            "Resource": "arn:aws:s3:::*"
        },
        {
            "Sid": "BplmNatGatewayTaggingPolicy",
            "Effect": "Allow",
            "Action": [
                "ec2:DeleteTags",
                "ec2:CreateTags"
            ],
            "Resource": [
              "arn:aws:ec2:*:<Databricks_Wksp_AWS_Account_Id>:natgateway/*",
              "arn:aws:ec2:*:<Databricks_Wksp_AWS_Account_Id>:natgateway/*",
              "arn:aws:ec2:*:<Databricks_Wksp_AWS_Account_Id>:vpc/*",
              "arn:aws:ec2:*:<Databricks_Wksp_AWS_Account_Id>:internet-gateway/*",
              "arn:aws:ec2:*:<Databricks_Wksp_AWS_Account_Id>:elastic-ip/*",
              "arn:aws:ec2:*:<Databricks_Wksp_AWS_Account_Id>:route-table/*",
              "arn:aws:ec2:*:<Databricks_Wksp_AWS_Account_Id>:vpc-endpoint/*"
            ]
        },
        {
            "Sid": "BplmNatGatewayVpcsTaggingPolicy",
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeVpcs",
                "ec2:DescribeNatGateways",
                "ec2:DescribeVpcEndpoints",
                "ec2:DescribeAddresses",
                "ec2:DescribeInternetGateways",
                "ec2:DescribeRouteTables"
            ],
            "Resource": "*"
        }
    ]
}

Trust policy for the IAM_Role_Cost_Tag_For_S3_And_NAT that allows the LHO Application IAM Role in the app-host AWS Account to assume the role:

Code Block
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::<LHM<LHO_App_Host_AWS_Account_ID>:role/<LHM<LHO_App_IAM_Role>"
            },
            "Action": "sts:AssumeRole",
        }
    ]
}

...

Code Block
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AssumeCostExplorerRole",
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": "arn:aws:iam::<Databricks_Wksp_AWS_Account_Id>:role/<IAM_Role_Cost_Explorer>"
        },
        {
            "Sid": "AssumeS3AndNatTagRole",
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": "arn:aws:iam::<Databricks_Wksp_AWS_Account_Id>:role/<IAM_Role_Cost_Tag_For_S3_And_NAT>"
        }
    ]
}

And in the Lakehouse Monitor Optimizer .env config file provide the source role name for cost explorer and tags.

...

In case of multiple AWS accounts hosting cloud resources for Databricks workspaces, you need to provide a comma-separated list of roles, one role for each of them comma-separatedAWS account.