簡體   English   中英

在 Terraform 內設置 IAM 策略

[英]Setting IAM Policy within Terraform

我在按照 Terraform 上的文檔設置 IAM 策略時遇到問題。嘗試使用databricks 中的文檔將此策略分配給我的 S3 存儲桶時

正在返回以下錯誤Policy document should not specify a principal.

您可以使用以下代碼部分進行復制

resource "aws_iam_policy" "databricks_bucket_policy" {
  name        = "databrick_bucket_policy"
  path        = "/"
  description = "A policy for Databricks S3 Bucket"

  # Terraform's "jsonencode" function converts a
  # Terraform expression result to valid JSON syntax.
  policy = jsonencode({
    "Version" : "2012-10-17",
    "Statement" : [
      {
        "Effect" : "Allow",
        "Principal" : {
          "AWS" : [
            "arn:aws:iam::414351767826:role/unity-catalog-prod-UCMasterRole-14S5ZJVKOTYTL",
            "arn:aws:iam::<YOUR_AWS_ACCOUNT_ID>:role/<THIS_ROLE_NAME>"
          ]
        },
        "Action" : "sts:AssumeRole",
        "Condition" : {
          "StringEquals" : {
            "sts:ExternalId" : "<DATABRICKS_ACCOUNT_ID>"
          }
        }
      }
    ]
  })
}

我已經嘗試遵循此 terraform 文檔,但尚未完全理解 如果有人可以澄清如何做到這一點,我將不勝感激。

您正在嘗試創建aws_iam_policy資源並將其分配給 S3 存儲桶,但您只能將aws_s3_bucket_policy分配給存儲桶。 IAM 策略分配給用戶或角色,因此您永遠不會在 IAM 策略中指定委托人,因為它直接分配給它所應用的委托人。

相比之下,將資源策略(例如 S3 存儲桶策略)分配給資源,並且您指定要授予或拒絕訪問該資源的委托人。


現在,查看 Databricks 文檔,他們在文檔的第 3 步中為您提供的似乎是一種信任關系。 第 4 步具有 IAM 策略。 他們還指導您創建 IAM 角色,而不是 S3 存儲桶策略。

看起來您被指示要做的是創建一個 Databricks 可以承擔的 IAM 角色,這使 Databricks 可以訪問您帳戶中的 S3 存儲桶。 根本沒有指示您創建 S3 存儲桶策略。

您的 Terraform 應如下所示:

resource "aws_iam_role" "databricks_role" {
  name = "databricks_role"

  assume_role_policy = jsonencode(
    # The JSON from Step 3 goes here
  )
}

resource "aws_iam_policy" "databricks_role_policy" {
  name        = "databrick_role_policy"
  path        = "/"
  description = "A policy for Databricks IAM Role"

  policy = jsonencode(
    # The JSON from Step 4 goes here
  )
}

resource "aws_iam_role_policy_attachment" "databricks_role" {
  role       = aws_iam_role.databricks_role.name
  policy_arn = aws_iam_policy.databricks_role_policy.arn
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM