使用者對 Amazon RDS 資料庫執行個體執行建立、刪除、修改、備份和復原所需的最低權限是什麼?

3 分的閱讀內容
0

我想限制向 AWS Identity and Access Management (IAM) 使用者授予的對 Amazon Relational Database Service (Amazon RDS) 資料庫執行個體的存取權限。如何向 IAM 使用者授予對 Amazon RDS 資料庫執行個體執行特定動作所需的最低權限?

解決方法

**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請確保您使用的是最新版本的 AWS CLI

1.    開啟 IAM 主控台,然後從導覽窗格中選擇使用者

2.    選擇新增使用者,然後輸入使用者名稱

3.    對於存取類型,請選擇 AWS 管理主控台****存取權,然後建立密碼以使用 Amazon RDS 主控台。若要提供對 AWS Command Line Interface (AWS CLI) 的存取權,請選擇以程式設計方式存取

重要事項:對於以程式設計方式存取,請務必選擇 Download.csv 以下載存取金鑰 ID 和私密存取金鑰。您需要密鑰才能在稍後建立安全權杖。

4.    檢閱權限和標籤,然後選擇建立使用者。這會建立具有 IAMUserChangePassword 政策的 IAM 使用者。

5.    針對要在 Amazon RDS 中執行的動作建立 IAM 政策

6.    返回 IAM 主控台,然後從導覽窗格中選擇使用者

7.    選擇您建立的 IAM 使用者。

8.    在權限標籤上,選擇新增內嵌政策

9.    選擇 JSON 標籤,然後根據使用案例輸入下列一個或多個政策。

**注意:**下列政策提供執行指定動作所需的最低權限。您可能會在 Amazon RDS 主控台中看到錯誤 (例如,IAMUser 無權執行:rds:Action),因為政策中沒有此權限。大多數情況下,此錯誤因 Describe 動作而發生。該錯誤是預期發生的,不會影響您執行這些動作的能力。若要避免此錯誤,您可以修改下列 IAM 政策範例,或使用 AWS CLI 執行動作。

建立和刪除 RDS 資料庫執行個體

下列政策允許使用者在不啟用加密的情況下建立 RDS 資料庫執行個體:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeVpcAttribute",
        "ec2:DescribeSecurityGroups",
        "ec2:DescribeInternetGateways",
        "ec2:DescribeAvailabilityZones",
        "ec2:DescribeVpcs",
        "ec2:DescribeAccountAttributes",
        "ec2:DescribeSubnets",
        "rds:Describe*",
        "rds:ListTagsForResource",
        "rds:CreateDBInstance",
        "rds:CreateDBSubnetGroup"
      ],
      "Resource": "*"
    }
  ]
}

下列政策允許使用者在啟用加密的情況下建立 RDS 資料庫執行個體:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeVpcAttribute",
        "ec2:DescribeSecurityGroups",
        "ec2:DescribeInternetGateways",
        "ec2:DescribeAvailabilityZones",
        "ec2:DescribeVpcs",
        "ec2:DescribeAccountAttributes",
        "ec2:DescribeSubnets",
        "rds:Describe*",
        "rds:ListTagsForResource",
        "rds:CreateDBInstance",
        "rds:CreateDBSubnetGroup",
        "kms:ListAliases"
      ],
      "Resource": "*"
    }
  ]
}

注意: 若要使用客戶受管金鑰進行加密,而不使用預設的 AWS 受管金鑰,您必須授權使用客戶受管金鑰

下列政策允許使用者刪除 RDS 資料庫執行個體:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "rds:DeleteDBInstance",
        "rds:DescribeDBInstances"
      ],
      "Resource": "*"
    }
  ]
}

下列政策允許使用者建立和刪除 RDS 資料庫執行個體:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeVpcAttribute",
        "ec2:DescribeSecurityGroups",
        "ec2:DescribeInternetGateways",
        "ec2:DescribeAvailabilityZones",
        "ec2:DescribeVpcs",
        "ec2:DescribeAccountAttributes",
        "ec2:DescribeSubnets",
        "rds:Describe*",
        "rds:ListTagsForResource",
        "rds:CreateDBInstance",
        "rds:CreateDBSubnetGroup",
        "rds:DeleteDBInstance"
      ],
      "Resource": "*"
    }
  ]
}

停止和啟動 RDS 資料庫執行個體

下列政策允許使用者停止和啟動 RDS 資料庫執行個體:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "rds:StopDBInstance",
        "rds:StartDBInstance",
        "rds:Describe*"
      ],
      "Resource": "*"
    }
  ]
}

執行備份和復原 (建立資料庫快照、從資料庫快照還原資料庫執行個體,以及時間點還原)

下列政策允許使用者建立資料庫快照:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "rds:Describe*",
        "rds:CreateDBSnapshot"
      ],
      "Resource": "*"
    }
  ]
}

下列政策允許使用者使用資料庫快照還原 RDS 資料庫執行個體:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:Describe*",
        "rds:Describe*",
        "rds:RestoreDBInstanceFromDBSnapshot"
      ],
      "Resource": "*"
    }
  ]
}

下列政策允許使用者執行時間點復原:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:Describe*",
        "rds:Describe*",
        "rds:RestoreDBInstanceToPointInTime"
      ],
      "Resource": "*"
    }
  ]
}

修改 RDS 數據庫實例

下列政策允許使用者變更資料庫執行個體類別類型、配置的儲存空間、儲存空間類型和執行個體版本:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:Describe*",
        "rds:Describe*",
        "rds:ModifyDBInstance"
      ],
      "Resource": "*"
    }
  ]
}

啟用 Enhanced Monitoring 和 Performance Insights

下列政策允許使用者啟用 Enhanced Monitoring。請務必使用接收增強型監控角色的每個帳戶來取代 Account ID

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iam:GetRole",
        "iam:ListRoles",
        "rds:ModifyDBInstance",
        "rds:Describe*",
        "ec2:Describe*"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": "arn:aws:iam::AccountID:role/rds-monitoring-role"
    }
  ]
}

注意: 與 iam:PassRole 搭配使用時,萬用字元 (*) 會過於寬鬆,因為它允許所有資源擁有 iam:PassRole 權限。因此,最佳實務是指定 Amazon Resource Names (ARN),如先前範例所示。

下列政策允許使用者啟用 Performance Insights:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "rds:ModifyDBInstance",
        "ec2:Describe*",
        "rds:Describe*",
        "pi:*"
      ],
      "Resource": "*"
    }
  ]
}

建立、修改和刪除資料庫參數群組和資料庫選項群組

下列政策允許使用者建立、修改或刪除資料庫參數群組和選項群組:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:Describe*",
        "rds:Describe*",
        "rds:CreateDBParameterGroup",
        "rds:ModifyDBParameterGroup",
        "rds:DeleteDBParameterGroup",
        "rds:CreateOptionGroup",
        "rds:ModifyOptionGroup",
        "rds:DeleteOptionGroup"
      ],
      "Resource": "*"
    }
  ]
}

從 Amazon RDS 主控台檢視 Amazon CloudWatch 指標

下列政策允許使用者從 Amazon RDS 主控台檢視 CloudWatch 指標:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "rds:Describe*",
        "cloudwatch:GetMetricData",
        "cloudwatch:GetMetricStatistics"
      ],
      "Resource": "*"
    }
  ]
}

10.    選擇檢閱政策

11.    輸入政策的名稱,然後選擇建立政策


相關資訊

Amazon RDS 的身分和存取管理

如何允許使用者使用其 IAM 憑證對 Amazon RDS MySQL 資料庫執行個體進行驗證?