簡化程式設計存取 AWS 服務 的資訊 - 服務授權參考

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

簡化程式設計存取 AWS 服務 的資訊

AWS 以 JSON 格式提供服務參考資訊,以簡化政策管理工作流程的自動化。使用服務參考資訊,您可以從 AWS 服務 機器可讀取的檔案跨 存取可用的操作、動作、資源和條件索引鍵。服務參考資訊包含授權詳細資訊以外的中繼資料,包括 IAM 動作上次存取資訊和 IAM Access Analyzer 政策產生資料。

安全管理員可以建立護欄,開發人員可以透過識別每個 的可用動作、資源和條件索引鍵來確保應用程式的適當存取 AWS 服務。 AWS 提供 的服務參考資訊 AWS 服務 ,可讓您將中繼資料整合到您的政策管理工作流程中。

服務授權參考中呈現的內容可能會以不同方式呈現,或包含不同的中繼資料。如需詳細資訊,請參閱其他欄位定義

服務參考資訊也提供操作的中繼資料,包括 SDKs 中授權動作和方法名稱的資訊。

條件索引鍵值的其他內容可能可用於協助界定許可範圍。例如,當 操作iam:PassRole授權動作時,iam:PassedToService可能會出現 的值。

並非所有 服務都支援此操作到動作映射。尚不支援此映射的服務會省略 AuthorizedAction 屬性。此外, 操作的授權動作資訊不包含使用轉送存取工作階段代表您呼叫的操作可能需要的許可。

注意

服務參考資訊的變更最多可能需要 24 小時才會反映在服務的中繼資料清單中。

存取 AWS 服務 參考資訊
  1. 導覽至服務參考資訊,以存取可用的 AWS 服務 參考資訊的 清單。

    有兩個主要進入點:

    http://servicereference.us-east-1.amazonaws.com/ 會顯示可用的 AWS 服務 參考資訊的清單。

    下列範例顯示其個別參考資訊的部分服務和 URLs 清單:

    [ { "service": "s3", "url": "https://servicereference.us-east-1.amazonaws.com/v1/s3/s3.json" }, { "service": "dynamodb", "url": "https://servicereference.us-east-1.amazonaws.com/v1/dynamodb/dynamodb.json" }, … ]

    https://servicereference.us-east-1.amazonaws.com/v1/mapping.json 會顯示從 SDK 服務到服務參考中位置的映射,該資訊可在其中找到。

    下列範例顯示部分映射清單:

    { "SDK" : { "Python" : { "Boto3" : { "accessanalyzer" : { "service" : "access-analyzer", "url" : "https://servicereference.us-east-1.amazonaws.com/v1/access-analyzer/access-analyzer.json" }, "account" : { "service" : "account", "url" : "https://servicereference.us-east-1.amazonaws.com/v1/account/account.json" }, "amp" : { "service" : "aps", "url" : "https://servicereference.us-east-1.amazonaws.com/v1/aps/aps.json" }, ... } } } }
  2. 選擇服務並導覽至服務 url 欄位中的服務資訊頁面,以檢視服務的動作、資源和條件索引鍵清單。

    下列範例顯示 Amazon S3 的部分服務參考資訊清單:

    { "Name": "s3", "Actions": [ { "Name": "GetObject", "ActionConditionKeys": [ "s3:AccessGrantsInstanceArn", "s3:AccessPointNetworkOrigin", "s3:DataAccessPointAccount", "s3:DataAccessPointArn", "s3:ExistingObjectTag/key", "s3:ResourceAccount", "s3:TlsVersion", "s3:authType", "s3:if-match", "s3:if-none-match", "s3:signatureAge", "s3:signatureversion", "s3:x-amz-content-sha256" ], "Annotations" : { "Properties" : { "IsList" : false, "IsPermissionManagement" : false, "IsTaggingOnly" : false, "IsWrite" : false } }, "Resources": [ { "Name": "object" } ], "SupportedBy" : { "IAM Access Analyzer Policy Generation" : false, "IAM Action Last Accessed" : false } }, { "Name": "ListBucket", "ActionConditionKeys": [ "s3:AccessGrantsInstanceArn", "s3:AccessPointNetworkOrigin", "s3:DataAccessPointAccount", "s3:DataAccessPointArn", "s3:ResourceAccount", "s3:TlsVersion", "s3:authType", "s3:delimiter", "s3:max-keys", "s3:prefix", "s3:signatureAge", "s3:signatureversion", "s3:x-amz-content-sha256" ], "Annotations" : { "Properties" : { "IsList" : true, "IsPermissionManagement" : false, "IsTaggingOnly" : false, "IsWrite" : false } }, "Resources": [ { "Name": "bucket" } ], "SupportedBy" : { "IAM Access Analyzer Policy Generation" : false, "IAM Action Last Accessed" : false } }, ... ], "ConditionKeys": [ { "Name": "s3:TlsVersion", "Types": [ "Numeric" ] }, { "Name": "s3:authType", "Types": [ "String" ] }, ... ], "Operations": [ { "Name" : "GetObject", "AuthorizedActions" : [ { "Name" : "GetObject", "Service" : "s3" }, { "Name" : "GetObject", "Service" : "s3-object-lambda" }, { "Name" : "GetObjectLegalHold", "Service" : "s3" }, { "Name" : "GetObjectRetention", "Service" : "s3" }, { "Name" : "GetObjectTagging", "Service" : "s3" }, { "Name" : "GetObjectVersion", "Service" : "s3" } ], "SDK" : [ { "Name" : "s3", "Method" : "get_object", "Package" : "Boto3" } ] }, ... ], "Resources": [ { "Name": "accesspoint", "ARNFormats": [ "arn:${Partition}:s3:${Region}:${Account}:accesspoint/${AccessPointName}" ] }, { "Name": "bucket", "ARNFormats": [ "arn:${Partition}:s3:::${BucketName}" ] } ... ], "Version": "v1.4" }
  3. 從服務 URL 下載 JSON 檔案,以用於您的政策撰寫工作流程。

詞彙表

  • 操作 - 可呼叫的 API,通常透過 SDK

  • 動作 - 執行 操作時授權的許可

其他欄位定義

動作屬性提供有關服務動作的其他中繼資料,以協助根據其許可範圍進行分類。這些屬性位於每個動作的 Annotations 欄位下。中繼資料包含四個布林值:

  • IsList – 提供探索和列出資源的許可,包括基本中繼資料,而無需存取資源內容。

    範例 – 此屬性true適用於 Amazon S3 ListBucket動作,允許使用者檢視儲存貯體清單,而無需自行存取物件。

  • IsPermissionManagement – 提供修改 IAM 許可或存取登入資料的許可。

    範例 – 此屬性true適用於大多數 IAM 和 AWS Organizations 動作,以及 PutBucketPolicy和 等 Amazon S3 動作DeleteBucketPolicy

  • IsTaggingOnly – 僅提供修改標籤的許可。

    範例 – 此屬性true適用於 IAM 動作TagRoleUntagRole,而此屬性false適用於 ,CreateRole因為它提供超出標記範圍的許可。

  • IsWrite – 提供修改 資源的許可,其中可能包括標籤修改。

    範例 – 此屬性true適用於 Amazon S3 動作 CreateBucket、 和 DeleteBucketPutObject因為它們允許資源修改。

注意

這些屬性不是互斥的。動作可能將多個屬性設定為 true

所有屬性也可能是 false,如 Amazon S3 GetObject的動作所示。這表示動作只會授予物件的讀取許可。

這些屬性可用來產生 服務的洞見。下列範例顯示具有 s3字首的哪些許可允許變更資源:

> curl https://servicereference.us-east-1.amazonaws.com/v1/s3/s3.json | \ jq '.Actions[] | select(.Annotations.Properties.IsWrite == true) | .Name' "AssociateAccessGrantsIdentityCenter" "BypassGovernanceRetention" "CreateAccessGrant" "CreateAccessGrantsInstance" "CreateAccessGrantsLocation" ...

下列範例顯示哪些動作條件索引鍵具有 lambda字首,您可以用來限制對許可管理動作的存取:

> curl https://servicereference.us-east-1.amazonaws.com/v1/lambda/lambda.json | \ jq '.Actions[] | select(.Annotations.Properties.IsPermissionManagement == true) | {Name: .Name, ActionConditionKeys: (.ActionConditionKeys // [])}' { "Name": "AddLayerVersionPermission", "ActionConditionKeys": [] } { "Name": "AddPermission", "ActionConditionKeys": [ "lambda:FunctionUrlAuthType", "lambda:Principal" ] } { "Name": "DisableReplication", "ActionConditionKeys": [] } { "Name": "EnableReplication", "ActionConditionKeys": [] } { "Name": "RemoveLayerVersionPermission", "ActionConditionKeys": [] } { "Name": "RemovePermission", "ActionConditionKeys": [ "lambda:FunctionUrlAuthType", "lambda:Principal" ] }