Skip to main content
How to enable StorageGRID in your environment
本繁體中文版使用機器翻譯,譯文僅供參考,若與英文版本牴觸,應以英文版本為準。

範例庫與群組(IAM)原則

貢獻者

以下是 StorageGRID S3 的原則和權限範例。

原則的結構

在 StorageGRID 中,群組原則與 AWS 使用者( IAM ) S3 服務原則相同。

StorageGRID 中需要群組原則。擁有 S3 存取金鑰但未指派給使用者群組的使用者,或是指派給群組的使用者,若沒有原則授予某些權限,將無法存取任何資料。

庫位和群組原則共享大部分相同的元素。原則是以 json 格式建置,可使用產生 "AWS 原則產生器"

所有原則都會定義影響,行動和資源。貯體原則也會定義主體。

「 * 效果 * 」將是「允許」或「拒絕」要求。

  • 負責人 *

  • 僅適用於貯體原則。

  • 主體是被授與或拒絕權限的帳戶 / 使用者。

  • 可定義為:

    • 萬用字元 "*"

      "Principal":"*"
      "Principal":{"AWS":"*"}
    • 租戶中所有使用者的租戶 ID (相當於 AWS 帳戶)

      "Principal": { "AWS": "27233906934684427525" }
    • 使用者(來自貯體所在租戶內部的本機或聯盟,或網格中的其他租戶)

      "Principal": { "AWS": "arn:aws:iam::76233906934699427431:user/tenant1user1" }
      "Principal": { "AWS": "arn:aws:iam::27233906934684427525:federated-user/tenant2user1" }
    • 群組(來自貯體所在租戶內部的本機或聯盟群組,或網格中的其他租戶)。

      "Principal": { "AWS": "arn:aws:iam::76233906934699427431:group/DevOps"  }
      "Principal": { "AWS": "arn:aws:iam::27233906934684427525:federated-group/Managers"  }

「 * 行動 * 」是一組 S3 作業正在授予或拒絕給使用者。

註 對於群組原則,使用者必須執行 S3 : ListBucket 動作,才能執行任何 S3 動作。

「資源 * 」是被授與或拒絕執行動作的主體所在的貯體或貯體。(可選)當策略操作有效時,可以有 * 條件 * 。

JSON 原則的格式如下:

{
  "Statement": [
    {
      "Sid": "Custom name for this permission",
      "Effect": "Allow or Deny",
      "Principal": {
        "AWS": [
          "arn:aws:iam::tenant_ID::user/User_Name",
          "arn:aws:iam::tenant_ID::federated-user/User_Name",
          "arn:aws:iam::tenant_ID:group/Group_Name",
          "arn:aws:iam::tenant_ID:federated-group/Group_Name",
          "tenant_ID"
        ]
      },
      "Action": [
        "s3:ListBucket",
        "s3:Other_Action"
      ],
      "Resource": [
        "arn:aws:s3:::Example_Bucket",
        "arn:aws:s3:::Example_Bucket/*"
      ],
    }
  ]
}
JSON

使用 AWS 原則產生器

AWS 原則產生器是一項絕佳工具,可協助您取得 json 程式碼,並取得您嘗試實作的正確格式和資訊。

若要產生 StorageGRID 群組原則的權限: * 選擇原則類型的 IAM 原則。* 選取所需效果的按鈕:「允許」或「拒絕」。最好先以拒絕權限啟動原則,然後在「動作」下拉式清單中新增「允許權限」 * ,然後按一下您要在此權限或「所有動作」方塊中加入的 S3 動作數量旁邊的方塊。* 在「 Amazon 資源名稱( ARN )」方塊中輸入貯體路徑。在貯體名稱前加上「 arn:AWS:S3 ::::」。例如:"arn:AWS : S3 ::: Example_Bucket"

產生群組原則

若要產生貯體原則的權限: * 針對原則類型選擇 S3 Bucket 原則。* 選取所需效果的按鈕:「允許」或「拒絕」。以拒絕權限啟動原則,然後新增允許權限 * 輸入主體的使用者或群組資訊,是個不錯的做法。* 在「動作」下拉式清單中,按一下您要在此權限或「所有動作」方塊中包含的 S3 動作數量旁邊的方塊。* 在「 Amazon 資源名稱( ARN )」方塊中輸入貯體路徑。在貯體名稱前加上「 arn:AWS:S3 ::::」。例如:"arn:AWS : S3 ::: Example_Bucket"

產生貯體原則

例如,如果您想要產生貯體原則,讓所有使用者都能對貯體中的所有物件執行 GetObject 作業,而只有屬於指定帳戶中「行銷」群組的使用者才可以擁有完整存取權。

  • 選取 S3 Bucket Policy 做為原則類型。

  • 選擇「允許」效果

  • 輸入行銷群組資訊 - arn:AWs:iam::95390887230002558202:Federated -group/Marketing

  • 按一下「所有動作」方塊

  • 輸入貯體資訊 - arn:AWS:S3:::example_Bucket,arn:AWS:::::example_Bucket/*

產生原則中的第一個權限

  • 按一下「新增說明」按鈕

所輸入原則的第一個權限

  • 選擇「允許」效果

  • 輸入每個人的星號 *

  • 按一下「 GetObject 和 ListBucket 動作」旁邊的方塊

選取 GetObject 選取 ListBucket

  • 輸入貯體資訊 - arn:AWS:S3:::example_Bucket,arn:AWS:::::example_Bucket/*

產生原則中的第二個權限

  • 按一下「新增說明」按鈕

原則中的第二個權限

  • 按一下「產生原則」按鈕,就會出現一個快顯視窗,顯示您產生的原則。

最終輸出

  • 複製完整的 json 文字,如下所示:

{
  "Id": "Policy1744399292233",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1744399152830",
      "Action": "s3:*",
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::example_bucket",
        "arn:aws:s3:::example_bucket/*"
      ],
      "Principal": {
        "AWS": [
          "arn:aws:iam::95390887230002558202:federated-group/Marketing"
        ]
      }
    },
    {
      "Sid": "Stmt1744399280838",
      "Action": [
        "s3:GetObject",
        "s3:ListBucket"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::example_bucket",
        "arn:aws:s3:::example_bucket/*"
      ],
      "Principal": "*"
    }
  ]
}
JSON

此 json 可依原樣使用,也可移除「對帳單」行上方的 ID 和版本行,您可以針對每個權限自訂 Sid ,並針對每個權限設定更有意義的標題,也可以移除這些標題。

例如:

{
  "Statement": [
    {
      "Sid": "MarketingAllowFull",
      "Action": "s3:*",
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::example_bucket",
        "arn:aws:s3:::example_bucket/*"
      ],
      "Principal": {
        "AWS": [
          "arn:aws:iam::95390887230002558202:federated-group/Marketing"
        ]
      }
    },
    {
      "Sid": "EveryoneReadOnly",
      "Action": [
        "s3:GetObject",
        "s3:ListBucket"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::example_bucket",
        "arn:aws:s3:::example_bucket/*"
      ],
      "Principal": "*"
    }
  ]
}
JSON

群組原則(IAM)

主目錄樣式庫存取

此群組原則僅允許使用者存取名為使用者使用者名稱之儲存區中的物件。

{
"Statement": [
    {
      "Sid": "AllowListBucketOfASpecificUserPrefix",
      "Effect": "Allow",
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::home",
      "Condition": {
        "StringLike": {
          "s3:prefix": "${aws:username}/*"
        }
      }
    },
    {
      "Sid": "AllowUserSpecificActionsOnlyInTheSpecificUserPrefix",
      "Effect": "Allow",
      "Action": "s3:*Object",
      "Resource": "arn:aws:s3:::home/?/?/${aws:username}/*"
    }

  ]
}
JSON

拒絕建立物件鎖定儲存區

此群組原則會限制使用者建立在貯體上啟用物件鎖定的貯體。

註

此原則並未在StorageGRID SUI中強制執行、只有S3 API才會強制執行。

{
    "Statement": [
        {
            "Action": "s3:*",
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::*"
        },
        {
            "Action": [
                "s3:PutBucketObjectLockConfiguration",
                "s3:PutBucketVersioning"
            ],
            "Effect": "Deny",
            "Resource": "arn:aws:s3:::*"
        }
    ]
}
JSON

物件鎖定保留限制

此 Bucket 原則將物件鎖定保留期間限制為 10 天或更短

{
 "Version":"2012-10-17",
 "Id":"CustSetRetentionLimits",
 "Statement": [
   {
    "Sid":"CustSetRetentionPeriod",
    "Effect":"Deny",
    "Principal":"*",
    "Action": [
      "s3:PutObjectRetention"
    ],
    "Resource":"arn:aws:s3:::testlock-01/*",
    "Condition": {
      "NumericGreaterThan": {
        "s3:object-lock-remaining-retention-days":"10"
      }
    }
   }
  ]
}
JSON

限制使用者以版本 ID 刪除物件

此群組原則會限制使用者依照版本 ID 刪除版本管理的物件

{
    "Statement": [
        {
            "Action": [
                "s3:DeleteObjectVersion"
            ],
            "Effect": "Deny",
            "Resource": "arn:aws:s3:::*"
        },
        {
            "Action": "s3:*",
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::*"
        }
    ]
}
JSON

將群組限制為具有唯讀存取權的單一子目錄(首碼)

此原則可讓群組成員對儲存庫中的子目錄(前置)擁有唯讀存取權。貯體名稱為「 study 」、子目錄為「 study01 」。

{
    "Statement": [
        {
            "Sid": "AllowUserToSeeBucketListInTheConsole",
            "Action": [
                "s3:ListAllMyBuckets"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::*"
            ]
        },
        {
            "Sid": "AllowRootAndstudyListingOfBucket",
            "Action": [
                "s3:ListBucket"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3::: study"
            ],
            "Condition": {
                "StringEquals": {
                    "s3:prefix": [
                        "",
                        "study01/"
                    ],
                    "s3:delimiter": [
                        "/"
                    ]
                }
            }
        },
        {
            "Sid": "AllowListingOfstudy01",
            "Action": [
                "s3:ListBucket"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::study"
            ],
            "Condition": {
                "StringLike": {
                    "s3:prefix": [
                        "study01/*"
                    ]
                }
            }
        },
        {
            "Sid": "AllowAllS3ActionsInstudy01Folder",
            "Effect": "Allow",
            "Action": [
                "s3:Getobject"
            ],
            "Resource": [
                "arn:aws:s3:::study/study01/*"
            ]
        }
    ]
}
JSON

貯體原則

將儲存區限制為具有唯讀存取權的單一使用者

此原則可讓單一使用者擁有儲存區的唯讀存取權、並明確地讓Denys存取所有其他使用者。將「拒絕」陳述式分組在原則頂端、是加速評估的好做法。

{
    "Statement": [
        {
            "Sid": "Deny non user1",
            "Effect": "Deny",
            "NotPrincipal": {
                "AWS": "arn:aws:iam::34921514133002833665:user/user1"
            },
            "Action": [
                "s3:*"
            ],
            "Resource": [
                "arn:aws:s3:::bucket1",
                "arn:aws:s3:::bucket1/*"
            ]
        },
        {
            "Sid": "Allow user1 read access to bucket bucket1",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::34921514133002833665:user/user1"
            },
            "Action": [
                "s3:GetObject",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::bucket1",
                "arn:aws:s3:::bucket1/*"
            ]
        }
    ]
}
JSON

將貯體限制在少數具有唯讀存取權的使用者。

{
    "Statement": [
      {
        "Sid": "Deny all S3 actions to employees 002-005",
        "Effect": "deny",
        "Principal": {
          "AWS": [
            "arn:aws:iam::46521514133002703882:user/employee-002",
            "arn:aws:iam::46521514133002703882:user/employee-003",
            "arn:aws:iam::46521514133002703882:user/employee-004",
            "arn:aws:iam::46521514133002703882:user/employee-005"
          ]
        },
        "Action": "*",
        "Resource": [
          "arn:aws:s3:::databucket1",
          "arn:aws:s3:::databucket1/*"
        ]
      },
      {
        "Sid": "Allow read-only access for employees 002-005",
        "Effect": "Allow",
        "Principal": {
          "AWS": [
            "arn:aws:iam::46521514133002703882:user/employee-002",
            "arn:aws:iam::46521514133002703882:user/employee-003",
            "arn:aws:iam::46521514133002703882:user/employee-004",
            "arn:aws:iam::46521514133002703882:user/employee-005"
          ]
        },
        "Action": [
          "s3:GetObject",
          "s3:GetObjectTagging",
          "s3:GetObjectVersion"
        ],
        "Resource": [
          "arn:aws:s3:::databucket1",
          "arn:aws:s3:::databucket1/*"
        ]
      }
    ]
}
JSON

限制使用者刪除貯體中的版本化物件

此貯體原則會限制使用者(由使用者 ID 「 56622399308951294926 」識別)依版本 ID 刪除版本管理物件

{
  "Statement": [
    {
      "Action": [
        "s3:DeleteObjectVersion"
      ],
      "Effect": "Deny",
      "Resource": "arn:aws:s3:::verdeny/*",
      "Principal": {
        "AWS": [
          "56622399308951294926"
        ]
      }
    },
    {
      "Action": "s3:*",
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::verdeny/*",
      "Principal": {
        "AWS": [
          "56622399308951294926"
        ]
      }
    }
  ]
}
JSON