搭配 S3 一般用途儲存貯體使用標籤 - Amazon Simple Storage Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

搭配 S3 一般用途儲存貯體使用標籤

AWS 標籤是金鑰值對,可保留資源的中繼資料,在此情況下為 Amazon S3 一般用途儲存貯體。您可以在建立 S3 儲存貯體或管理現有儲存貯體上的標籤時標記 S3 儲存貯體。如需有關標籤的一般資訊,請參閱 成本分配或屬性型存取控制 (ABAC) 的標記

注意

在超過標準 S3 API 請求率的儲存貯體上使用標籤不會產生額外費用。如需詳細資訊,請參閱 Simple Storage Service (Amazon S3) 定價

搭配儲存貯體使用標籤的常見方式

在 S3 儲存貯體上使用標籤:

  1. 成本分配 – 依照 AWS Billing and Cost Management中的儲存貯體標籤追蹤儲存成本。如需詳細資訊,請參閱使用標籤分配成本

  2. 屬性型存取控制 (ABAC) – 擴展存取許可,並根據 S3 儲存貯體的標籤授予存取權。如需詳細資訊,請參閱使用標籤執行 ABAC

    注意

    對於一般用途儲存貯體,預設不會啟用 ABAC。若要為一般用途儲存貯體啟用 ABAC,請參閱 在一般用途儲存貯體中啟用 ABAC。對於存取點和目錄儲存貯體等 Amazon S3 資源,預設為啟用 ABAC。您可以將相同的標籤同時用於成本分配和存取控制。

適用於 S3 一般用途儲存貯體的 ABAC

Amazon S3 一般用途儲存貯體支援使用標籤的屬性型存取控制 (ABAC)。在您的 AWS 組織、IAM 和 S3 儲存貯體政策中使用標籤型條件金鑰。對於企業,Amazon S3 中的 ABAC 支援跨多個 AWS 帳戶進行授權。

在 IAM 政策中,您可以使用下列全域條件金鑰,根據儲存貯體的標籤控制對 S3 儲存貯體的存取:

  • aws:ResourceTag/key-name

    • 使用此條件索引鍵來比較您在政策中指定的標籤索引鍵/值對與連接到資源的索引鍵/值對。S3 只會在儲存貯體上啟用 ABAC 之後評估此條件金鑰。例如,您可以要求只在資源擁有連接標籤鍵 Dept 和值 Marketing 時才允許資源的存取。如需詳細資訊,請參閱控制對 AWS 資源的存取

  • aws:RequestTag/key-name

    • 使用此條件金鑰,將請求中傳遞的標籤鍵值對與您在政策中指定的標籤對進行比較。例如,您可以檢查請求是否包含標籤鍵 Dept 並且其具有值 Accounting。如需詳細資訊,請參閱在AWS 請求期間控制存取。您可以使用此條件索引鍵,限制在 TagResourceCreateBucket API 操作期間可以傳遞哪些標籤鍵值對。

  • aws:TagKeys

    • 使用此條件索引鍵,將請求中的標籤索引鍵與您在政策中指定的索引鍵進行比較。當使用政策來控制使用標籤的存取時,建議您使用 aws:TagKeys 條件鍵來定義允許的標籤鍵。如需範例政策和詳細資訊,請參閱根據標籤金鑰控制存取權限

  • s3:BucketTag/tag-key

    • 使用此條件索引鍵,使用標籤將許可授予儲存貯體中的特定資料。此條件金鑰僅適用於在儲存貯體上啟用 ABAC 之後。使用存取點存取儲存貯體時, aws:ResourceTag/tag-key條件索引鍵會在授權存取點和儲存貯體時參考儲存貯體上的標籤。只會s3:BucketTag/tag-key參考其授權之儲存貯體的標籤。

注意

建立具有標籤的儲存貯體時,請注意,使用 aws:ResourceTag 和 s3:BucketTag 條件金鑰存取儲存貯體的標籤型條件僅適用於在儲存貯體上啟用 ABAC 之後。如需詳細資訊,請參閱 在一般用途儲存貯體中啟用 ABAC

儲存貯體的範例 ABAC 政策

請參閱下列 Amazon S3 儲存貯體的 ABAC 政策範例。

1.1 - IAM 政策,可建立或修改具有特定標籤的儲存貯體

在此 IAM 政策中,具有此政策的使用者或角色只有在儲存貯體在儲存貯體建立請求Trinity 中使用標籤索引鍵project和標籤值標記時,才能建立 S3 儲存貯體。只要TagResource請求包含標籤鍵/值對 ,他們也可以新增或修改現有 S3 儲存貯體上的標籤project:Trinity。此政策不會授予對儲存貯體或其物件的讀取、寫入或刪除權限。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "CreateBucketWithTags", "Effect": "Allow", "Action": [ "s3:CreateBucket", "s3:TagResource" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestTag/project": [ "Trinity" ] } } } ] }

1.2 - 限制操作的儲存貯體政策

在此儲存貯體政策中,只有在儲存貯體上的project 標籤值符合主體上的project標籤值時s3:GetObject,才會拒絕儲存貯體上的 IAM 主體 (使用者和角色) s3:ListBucket、 和 s3:PutObject動作。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyObjectOperations", "Effect": "Deny", "Principal": "*", "Action": ["s3:ListBucket", "s3:GetObject", "s3:PutObject"], "Resource": "arn:aws:s3:::aws-s3-demo/*", "Condition": { "StringEquals": { "aws:ResourceTag/project": "${aws:PrincipalTag/project}" } } } ] }

1.3 - 修改現有資源上標籤的 IAM 政策

在此 IAM 政策中,只有在儲存貯體的 project 標籤值符合主體的 project 標籤值時,IAM 主體 (使用者或角色) 才能修改儲存貯體上的標籤。這些儲存貯體僅允許aws:TagKeys條件索引鍵中cost-center指定的四個標籤 project environmentowner、、 和 。這有助於強制執行標籤治理、防止未經授權的標籤修改,並且使所有儲存貯體的標記結構描述保持一致。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnforceTaggingRulesOnModification", "Effect": "Allow", "Action": [ "s3:TagResource", "s3:CreateBucket" ], "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "aws:TagKeys": [ "project", "environment", "owner", "cost-center" ] } } } ] }

1.4 - 使用 s3:BucketTag 條件金鑰

在此 IAM 政策中,只有在aws-s3-demo儲存貯體具有標籤索引鍵 Environment和標籤值 時,條件陳述式才會允許存取儲存貯體的資料Production

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAccessViaSpecificBucket", "Effect": "Allow", "Action": "*", "Resource": ["arn:aws:s3:::aws-s3-demo","arn:aws:s3:::aws-s3-demo/*"], "Condition": { "StringEquals": { "s3:BucketTag/Environment": "Production" } } } ] }

管理一般用途儲存貯體的標籤

您可以使用 Amazon S3 主控台、 AWS 命令列界面 (CLI)、 AWS SDKs 或使用 S3 APIs 來新增或管理 S3 儲存貯體的標籤:TagResourceUntagResourceListTagsForResource。如需詳細資訊,請參閱:

主題