步驟 3:連接政策到存取 AWS Glue 的使用者或群組 - AWS Glue

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

步驟 3:連接政策到存取 AWS Glue 的使用者或群組

管理員必須使用 AWS Glue 主控台或 AWS Command Line Interface (AWS CLI),將許可指派給任何使用者、群組或角色。您可透過政策用AWS Identity and Access Management (IAM) 提供這些許可。此步驟說明如何將許可指派給使用者或群組。

完成此步驟時,您的使用者或群組將連接以下政策:

  • AWS 受管政策 AWSGlueConsoleFullAccess 或自訂政策 GlueConsoleAccessPolicy

  • AWSGlueConsoleSageMakerNotebookFullAccess

  • CloudWatchLogsReadOnlyAccess

  • AWSCloudFormationReadOnlyAccess

  • AmazonAthenaFullAccess

連接內嵌政策並內嵌於使用者或群組

您可以將 AWS 受管政策或內嵌政策連接到使用者或群組,以允許其存取 AWS Glue 主控台。此政策指定的部分資源參照 AWS Glue 用於 Amazon S3 儲存貯體、Amazon S3 ETL 指令碼、CloudWatch Logs、AWS CloudFormation 和 Amazon EC2 資源的預設名稱。為了簡化,AWS Glue 寫入部分 Amazon S3 物件到您預設字首為 aws-glue-* 之帳戶的儲存貯體內。

注意

如果您使用 AWS 受管政策 AWSGlueConsoleFullAccess,可跳過此步驟。

重要

AWS Glue 需要獲得許可才能擔任代為執行任務的角色。為了達成這個目標,您新增 iam:PassRole 許可至 AWS Glue 使用者或群組。此政策授予許可給 AWS Glue 服務角色開頭為 AWSGlueServiceRole 的角色,和建立筆記本伺服器時需要之角色的 AWSGlueServiceNotebookRole。您也可以依照您的命名慣例建立自己的 iam:PassRole 許可政策。

根據安全性最佳實務,建議透過收緊政策來限制存取,進一步限制對 Amazon S3 儲存貯體和 Amazon CloudWatch 日誌群組的存取。如需範例 Amazon S3 政策,請參閱編寫 IAM 政策:如何授予 Amazon S3 儲存貯體的存取

在本步驟中,您將建立一個類似 AWSGlueConsoleFullAccess 的政策。最新版本的 AWSGlueConsoleFullAccess 可在 IAM 主控台找到。

  1. 登入 AWS Management Console,並開啟位於 https://console.aws.amazon.com/iam/ 的 IAM 主控台。

  2. 在導覽窗格中,選擇群組使用者

  3. 在清單中,選擇要內嵌政策的使用者或群組名稱。

  4. 選擇 Permissions (許可) 索引標籤,並在必要時,展開 Permissions policies (許可政策) 部分。

  5. 選擇 Add Inline policy (新增內嵌政策) 連結。

  6. Create Policy (建立政策) 畫面上導覽至索引標籤,以編輯 JSON。使用下列 JSON 陳述式建立政策文件,然後選擇 Review policy (檢閱政策)。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:*", "redshift:DescribeClusters", "redshift:DescribeClusterSubnetGroups", "iam:ListRoles", "iam:ListUsers", "iam:ListGroups", "iam:ListRolePolicies", "iam:GetRole", "iam:GetRolePolicy", "iam:ListAttachedRolePolicies", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "ec2:DescribeVpcEndpoints", "ec2:DescribeRouteTables", "ec2:DescribeVpcAttribute", "ec2:DescribeKeyPairs", "ec2:DescribeInstances", "rds:DescribeDBInstances", "rds:DescribeDBClusters", "rds:DescribeDBSubnetGroups", "s3:ListAllMyBuckets", "s3:ListBucket", "s3:GetBucketAcl", "s3:GetBucketLocation", "cloudformation:DescribeStacks", "cloudformation:GetTemplateSummary", "dynamodb:ListTables", "kms:ListAliases", "kms:DescribeKey", "cloudwatch:GetMetricData", "cloudwatch:ListDashboards" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::*/*aws-glue-*/*", "arn:aws:s3:::aws-glue-*" ] }, { "Effect": "Allow", "Action": [ "tag:GetResources" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "s3:CreateBucket", "s3:PutBucketPublicAccessBlock" ], "Resource": [ "arn:aws:s3:::aws-glue-*" ] }, { "Effect": "Allow", "Action": [ "logs:GetLogEvents" ], "Resource": [ "arn:aws:logs:*:*:/aws-glue/*" ] }, { "Effect": "Allow", "Action": [ "cloudformation:CreateStack", "cloudformation:DeleteStack" ], "Resource": "arn:aws:cloudformation:*:*:stack/aws-glue*/*" }, { "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:*:*:instance/*", "arn:aws:ec2:*:*:key-pair/*", "arn:aws:ec2:*:*:image/*", "arn:aws:ec2:*:*:security-group/*", "arn:aws:ec2:*:*:network-interface/*", "arn:aws:ec2:*:*:subnet/*", "arn:aws:ec2:*:*:volume/*" ] }, { "Action": [ "iam:PassRole" ], "Effect": "Allow", "Resource": "arn:aws:iam::*:role/AWSGlueServiceRole*", "Condition": { "StringLike": { "iam:PassedToService": [ "glue.amazonaws.com" ] } } }, { "Action": [ "iam:PassRole" ], "Effect": "Allow", "Resource": "arn:aws:iam::*:role/AWSGlueServiceNotebookRole*", "Condition": { "StringLike": { "iam:PassedToService": [ "ec2.amazonaws.com" ] } } }, { "Action": [ "iam:PassRole" ], "Effect": "Allow", "Resource": [ "arn:aws:iam::*:role/service-role/AWSGlueServiceRole*" ], "Condition": { "StringLike": { "iam:PassedToService": [ "glue.amazonaws.com" ] } } } ] }

    下表說明此政策授予的許可。

    Action Resource Description (描述)

    "glue:*"

    "*"

    授予執行所有 AWS Glue API 操作的許可。

    如果您之前已建立不含 "glue:*" 動作的政策,則您必須將下列個別許可指派至您的政策:

    • "glue:ListCrawlers"

    • "glue:BatchGetCrawlers"

    • "glue:ListTriggers"

    • "glue:BatchGetTriggers"

    • "glue:ListDevEndpoints"

    • "glue:BatchGetDevEndpoints"

    • "glue:ListJobs"

    • "glue:BatchGetJobs"

    "redshift:DescribeClusters", "redshift:DescribeClusterSubnetGroups"

    "*"

    允許建立 Amazon Redshift 的連線。

    "iam:ListRoles", "iam:ListRolePolicies", "iam:GetRole", "iam:GetRolePolicy", "iam:ListAttachedRolePolicies"

    "*"

    允許使用爬蟲程式、工作、開發端點和筆記本伺服器時列出 IAM 角色。

    "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "ec2:DescribeVpcEndpoints", "ec2:DescribeRouteTables", "ec2:DescribeVpcAttribute", "ec2:DescribeKeyPairs", "ec2:DescribeInstances"

    "*"

    允許執行任務、爬蟲程式和開發端點時設定 Amazon EC2 網路項目,例如 VPC。

    "rds:DescribeDBInstances"

    "*"

    允許建立 Amazon RDS 的連線。

    "s3:ListAllMyBuckets", "s3:ListBucket", "s3:GetBucketAcl", "s3:GetBucketLocation"

    "*"

    允許使用爬蟲程式、任務、開發端點和筆記本伺服器時列出 Amazon S3 儲存貯體。

    "dynamodb:ListTables"

    "*"

    允許列出 DynamoDB 資料表。

    "kms:ListAliases", "kms:DescribeKey"

    "*"

    允許使用 KMS 金鑰。

    "cloudwatch:GetMetricData", "cloudwatch:ListDashboards"

    "*"

    允許使用 CloudWatch 指標。

    "s3:GetObject", "s3:PutObject"

    "arn:aws:s3::: aws-glue-*/*", "arn:aws:s3::: */*aws-glue-*/*", "arn:aws:s3::: aws-glue-*"

    允許存放 ETL 指令碼和筆記本伺服器位置等物件時在您的帳戶中取得和放入 Amazon S3 物件。

    命名慣例:授予許可至名稱字首為 aws-glue- 的 Amazon S3 儲存貯體或資料夾。

    "tag:GetResources"

    "*"

    允許擷取 AWS 標籤。

    "s3:CreateBucket", "s3:PutBucketPublicAccessBlock"

    "arn:aws:s3::: aws-glue-*"

    允許存放 ETL 指令碼和筆記本伺服器位置等物件時在您的帳戶中建立 Amazon S3 儲存貯體。

    命名慣例:授予許可至名稱字首為 aws-glue- 的 Amazon S3 儲存貯體。

    讓 AWS Glue 建立封鎖公開存取的儲存貯體。

    "logs:GetLogEvents"

    "arn:aws:logs:*:*: /aws-glue/*"

    允許擷取 CloudWatch Logs。

    命名慣例:AWS Glue 寫入日誌到名稱開頭為 aws-glue- 的日誌群組。

    "cloudformation:CreateStack", "cloudformation:DeleteStack"

    "arn:aws:cloudformation:*:*:stack/ aws-glue*/*"

    允許使用筆記本伺服器時管理 AWS CloudFormation 堆疊。

    命名慣例:AWS Glue 建立名稱開頭為 aws-glue 的堆疊。

    "ec2:RunInstances"

    "arn:aws:ec2:*:*:instance/*", "arn:aws:ec2:*:*:key-pair/*", "arn:aws:ec2:*:*:image/*", "arn:aws:ec2:*:*:security-group/*", "arn:aws:ec2:*:*:network-interface/*", "arn:aws:ec2:*:*:subnet/*", "arn:aws:ec2:*:*:volume/*"

    允許開發端點和筆記本伺服器的執行。

    "iam:PassRole"

    "arn:aws:iam::*:role/ AWSGlueServiceRole*"

    允許 AWS Glue 擔任名稱開頭為 AWSGlueServiceRole 之角色的 PassRole 許可。

    "iam:PassRole"

    "arn:aws:iam::*:role/ AWSGlueServiceNotebookRole*"

    允許 Amazon EC2 擔任名稱開頭為 AWSGlueServiceNotebookRole 之角色的 PassRole 許可。

    "iam:PassRole"

    "arn:aws:iam::*:role/service-role/ AWSGlueServiceRole*"

    允許 AWS Glue 擔任名稱開頭為 service-role/AWSGlueServiceRole 之角色的 PassRole 許可。

  7. Review policy (檢閱政策) 頁面上,輸入政策名稱 (例如 GlueConsoleAccessPolicy)。當您滿意時,選擇 Create policy (建立政策)。確認畫面頂端的紅色方塊未出現任何錯誤。如出現任何錯誤,請加以修正。

    注意

    如果選取 Use autoformatting (使用自動格式化),每當您開啟政策或選擇 Validate Policy (驗證政策) 時,政策都會重新格式化。

附加 AWSGlueConsoleFullAccess 受管政策

您可連接 AWSGlueConsoleFullAccess 政策,以提供 AWS Glue 主控台使用者所需要的許可。

注意

如果您已自行為 AWS Glue 主控台存取建立政策,可跳過此步驟。

  1. 登入 AWS Management Console,並開啟位於 https://console.aws.amazon.com/iam/ 的 IAM 主控台。

  2. 在導覽窗格中,選擇 政策

  3. 在政策清單中,選取 AWSGlueConsoleFullAccess 旁的核取方塊。您可用 Filter (篩選) 功能表和搜尋方塊來篩選政策清單。

  4. 選擇 Policy actions (政策動作),再選擇 Attach (附加)。

  5. 選擇要附加政策的使用者。您可用 Filter (篩選) 功能表和搜尋方塊來篩選主體實體清單。選擇要附加的使用者後,選擇 Attach policy (附加政策)。

連接 AWSGlueConsoleSageMakerNotebookFullAccess 受管政策

您可以將 AWSGlueConsoleSageMakerNotebookFullAccess 政策連接至使用者,以管理在 AWS Glue 主控台中建立的 SageMaker 筆記本。除了其他必要的 AWS Glue 主控台許可之外,此政策會授予管理 SageMaker 筆記本所需的資源存取權。

  1. 登入 AWS Management Console,並開啟位於 https://console.aws.amazon.com/iam/ 的 IAM 主控台。

  2. 在導覽窗格中,選擇 政策

  3. 在政策清單中,選取 AWSGlueConsoleSageMakerNotebookFullAccess 旁的核取方塊。您可用 Filter (篩選) 功能表和搜尋方塊來篩選政策清單。

  4. 選擇 Policy actions (政策動作),再選擇 Attach (附加)。

  5. 選擇要附加政策的使用者。您可用 Filter (篩選) 功能表和搜尋方塊來篩選主體實體清單。選擇要附加的使用者後,選擇 Attach policy (附加政策)。

附加 CloudWatchLogsReadOnlyAccess 受管政策

您可以將 CloudWatchLogsReadOnlyAccess 政策連接到使用者,以在 CloudWatch Logs 主控台上檢視 AWS Glue 建立的日誌。

  1. 登入 AWS Management Console,並開啟位於 https://console.aws.amazon.com/iam/ 的 IAM 主控台。

  2. 在導覽窗格中,選擇 政策

  3. 在政策清單中,選取 CloudWatchLogsReadOnlyAccess 旁的核取方塊。您可用 Filter (篩選) 功能表和搜尋方塊來篩選政策清單。

  4. 選擇 Policy actions (政策動作),再選擇 Attach (附加)。

  5. 選擇要附加政策的使用者。您可用 Filter (篩選) 功能表和搜尋方塊來篩選主體實體清單。選擇要附加的使用者後,選擇 Attach policy (附加政策)。

附加 AWSCloudFormationReadOnlyAccess 受管政策

您可以將 AWSCloudFormationReadOnlyAccess 政策附加到使用者,在 AWS CloudFormation 主控台上檢視 AWS Glue 所用的 AWS CloudFormation 堆疊。

  1. 登入 AWS Management Console,並開啟位於 https://console.aws.amazon.com/iam/ 的 IAM 主控台。

  2. 在導覽窗格中,選擇 政策

  3. 在政策清單中,選取 AWSCloudFormationReadOnlyAccess 旁的核取方塊。您可用 Filter (篩選) 功能表和搜尋方塊來篩選政策清單。

  4. 選擇 Policy actions (政策動作),再選擇 Attach (附加)。

  5. 選擇要附加政策的使用者。您可用 Filter (篩選) 功能表和搜尋方塊來篩選主體實體清單。選擇要附加的使用者後,選擇 Attach policy (附加政策)。

連接 AmazonAthenaFullAccess 受管政策

您可以將 AmazonAthenaFullAccess 政策連接到使用者,以在 Athena 主控台中檢視 Amazon S3 資料。

  1. 登入 AWS Management Console,並開啟位於 https://console.aws.amazon.com/iam/ 的 IAM 主控台。

  2. 在導覽窗格中,選擇 政策

  3. 在政策清單中,選取 AmazonAthenaFullAccess 旁的核取方塊。您可用 Filter (篩選) 功能表和搜尋方塊來篩選政策清單。

  4. 選擇 Policy actions (政策動作),再選擇 Attach (附加)。

  5. 選擇要附加政策的使用者。您可用 Filter (篩選) 功能表和搜尋方塊來篩選主體實體清單。選擇要附加的使用者後,選擇 Attach policy (附加政策)。