跳至內容

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

3 分的閱讀內容
0

我想要授予 AWS Identity and Access Management (IAM) 使用者管理 Amazon Relational Database Service (Amazon RDS) 資料庫執行個體所需的最低權限。

解決方法

**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本

若要設定 IAM 使用者對 RDS 資料庫執行個體的存取權,請完成下列步驟:

  1. 開啟 IAM console (IAM 主控台)。
  2. 在導覽窗格中,選擇 Users (使用者)。
  3. 選擇 Add user (新增使用者),然後輸入 User name (使用者名稱)。
  4. 對於 Access type (存取類型),請選擇 AWS Management Console access (AWS 管理主控台存取權),然後建立密碼以使用 Amazon RDS 主控台。若要提供對 AWS CLI 的存取權,請選擇 Programmatic access (以程式設計方式存取)。
    **重要:**在 Programmatic access (以程式設計方式存取),選擇 Download.csv 以下載存取金鑰 ID 和私密存取金鑰。您需要密鑰才能在稍後建立安全權杖。
  5. 檢閱權限和標籤,然後選擇 Create user (建立使用者)。
    **注意:**這會建立具有 IAMUserChangePassword 政策的 IAM 使用者。
  6. 為要在 Amazon RDS 中執行的所需動作建立 IAM 政策
  7. 將您的 IAM 政策新增至您的使用者

IAM 政策範例

下列政策範例提供執行指定動作所需的最低權限。您可能會在 Amazon RDS 主控台中看到錯誤,因為政策中不存在所需的權限。例如,您可能會看到 IAMUser 無權執行:rds:Action 錯誤訊息。

描述動作可能會發生錯誤,但該錯誤不會影響您執行這些動作的能力。若要避免發生錯誤,請修改下列 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": "*"
    }
  ]
}

**注意:**若要使用客戶自管金鑰進行加密,您必須授權使用客戶自管金鑰

若要允許使用者刪除 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 資料庫執行個體

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

{  
  "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

當您使用 iam:PassRole 時,萬用字元 (*) 會過於寬鬆,因為它允許所有資源擁有 iam:PassRole 權限。最佳做法是指定 ARN。

若要允許使用者啟用 Enhanced Monitoring,請使用以下政策:

{  
  "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"
    }
  ]
}

**注意:**務必將 Account ID 替換為接收 Enhanced Monitoring 角色的每個帳戶。

若要允許使用者啟用 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",
        "cloudwatch:ListMetrics"
      ],
      "Resource": "*"
    }
  ]
}

相關資訊

Amazon RDS 的身分和存取管理

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