全部产品
Search
文档中心

Resource Access Management:Gunakan RAM untuk mengelola izin OSS

更新时间:Jul 02, 2025

Topik ini menjelaskan cara mengelola izin Object Storage Service (OSS) untuk pengguna Resource Access Management (RAM). Di konsol RAM, Anda dapat membuat kebijakan kustom dan melampirkannya ke pengguna RAM.

Informasi latar belakang

  • Sebelum mengelola izin OSS pengguna RAM, perhatikan kebijakan sistem berikut:
    • AliyunOSSFullAccess: Memberikan izin kepada pengguna RAM untuk mengelola bucket OSS.
    • AliyunECSReadOnlyAccess: Memberikan izin baca-saja pada bucket OSS.

    Jika kebijakan sistem tidak memenuhi kebutuhan bisnis Anda, Anda dapat membuat kebijakan kustom.

  • Sebelum mengelola izin OSS pengguna RAM, perhatikan izin OSS. Untuk informasi lebih lanjut, lihat Kebijakan RAM.

Prosedur

  1. Buat pengguna RAM.
    Untuk informasi lebih lanjut, lihat Buat Pengguna RAM.
  2. Buat kebijakan kustom.
    Untuk informasi lebih lanjut, lihat Buat Kebijakan Kustom dan Contoh Kebijakan.
  3. Lampirkan kebijakan ke pengguna RAM.
    Untuk informasi lebih lanjut, lihat Berikan Izin kepada Pengguna RAM.

Contoh kebijakan

  • Contoh 1: Berikan otorisasi kepada pengguna RAM untuk mengelola bucket bernama myphotos.
    {
        "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": "oss:*",
                "Resource": [
                    "acs:oss:*:*:myphotos",
                    "acs:oss:*:*:myphotos/*"
                ]
            }
        ]
    }
  • Contoh 2: Berikan otorisasi kepada pengguna RAM untuk mencantumkan dan membaca sumber daya di dalam bucket.
    • Untuk memberikan otorisasi kepada pengguna RAM mencantumkan dan membaca sumber daya di dalam bucket bernama myphotos menggunakan OSS SDK atau OSS CLI, gunakan skrip contoh berikut:
      {
          "Version": "1",
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": "oss:ListObjects",
                  "Resource": "acs:oss:*:*:myphotos"
              },
              {
                  "Effect": "Allow",
                  "Action": "oss:GetObject",
                  "Resource": "acs:oss:*:*:myphotos/*"
              }
          ]
      }
    • Untuk memberikan otorisasi kepada pengguna RAM menggunakan konsol OSS untuk mencantumkan dan membaca sumber daya di dalam bucket bernama myphotos, gunakan skrip contoh berikut:
      Catatan Saat pengguna RAM masuk ke konsol OSS, operasi ListBuckets, GetBucketAcl, dan GetObjectAcl dipanggil untuk memeriksa apakah bucket tersebut bersifat publik.
      {
          "Version": "1",
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                            "oss:ListBuckets",
                            "oss:GetBucketStat",
                            "oss:GetBucketInfo",
                            "oss:GetBucketTagging",
                            "oss:GetBucketAcl" 
                            ],    
                  "Resource": "acs:oss:*:*:*"
              },
              {
                  "Effect": "Allow",
                  "Action": [
                      "oss:ListObjects",
                      "oss:GetBucketAcl"
                  ],
                  "Resource": "acs:oss:*:*:myphotos"
              },
              {
                  "Effect": "Allow",
                  "Action": [
                      "oss:GetObject",
                      "oss:GetObjectAcl"
                  ],
                  "Resource": "acs:oss:*:*:myphotos/*"
              }
          ]
      }
  • Contoh 3: Berikan otorisasi kepada pengguna RAM untuk menggunakan alamat IP tertentu mengakses bucket OSS.
    • Tambahkan kondisi alamat IP ke elemen Allow. Ini memungkinkan pengguna RAM membaca data dari bucket myphotos menggunakan alamat IP dalam blok CIDR 192.168.0.0/16 atau 172.16.0.1/16.
      {
          "Version": "1",
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                            "oss:ListBuckets",
                            "oss:GetBucketStat",
                            "oss:GetBucketInfo",
                            "oss:GetBucketTagging",
                            "oss:GetBucketAcl" 
                            ], 
                  "Resource": [
                      "acs:oss:*:*:*"
                  ]
              },
              {
                  "Effect": "Allow",
                  "Action": [
                      "oss:ListObjects",
                      "oss:GetObject"
                  ],
                  "Resource": [
                      "acs:oss:*:*:myphotos",
                      "acs:oss:*:*:myphotos/*"
                  ],
                  "Condition":{
                      "IpAddress": {
                          "acs:SourceIp": ["192.168.0.0/16", "172.16.1.0/16"]
                      }
                  }
              }
          ]
      }
    • Tambahkan kondisi alamat IP ke elemen Deny. Jika alamat IP pengguna RAM tidak berada dalam blok CIDR 192.168.0.0/16, pengguna RAM tidak dapat mengakses atau mengelola bucket myphotos.
      {
          "Version": "1",
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                            "oss:ListBuckets",
                            "oss:GetBucketStat",
                            "oss:GetBucketInfo",
                            "oss:GetBucketTagging",
                            "oss:GetBucketAcl" 
                            ], 
                  "Resource": [
                      "acs:oss:*:*:*"
                  ]
              },
              {
                  "Effect": "Allow",
                  "Action": [
                      "oss:ListObjects",
                      "oss:GetObject"
                  ],
                  "Resource": [
                      "acs:oss:*:*:myphotos",
                      "acs:oss:*:*:myphotos/*"
                  ]
              },
              {
                  "Effect": "Deny",
                  "Action": "oss:*",
                  "Resource": [
                      "acs:oss:*:*:*"
                  ],
                  "Condition":{
                      "NotIpAddress": {
                          "acs:SourceIp": ["192.168.0.0/16"]
                      }
                  }
              }
          ]
      }
      Catatan Kebijakan dengan perintah Deny memiliki prioritas lebih tinggi daripada kebijakan dengan perintah Allow. Saat pengguna RAM mencoba membaca data dari bucket myphotos, tetapi alamat IP tidak berada dalam blok CIDR 192.168.0.0/16, OSS memberi tahu pengguna RAM bahwa pengguna RAM tidak memiliki izin yang diperlukan.
  • Contoh 4: Berikan otorisasi kepada pengguna RAM untuk membaca data dari direktori OSS.

    Dalam contoh ini, bucket yang menyimpan foto bernama myphotos. Bucket tersebut berisi beberapa folder yang dinamai berdasarkan lokasi tempat foto-foto tersebut diambil. Setiap folder berisi subfolder yang dinamai berdasarkan tahun ketika foto-foto tersebut diambil.

    myphotos[Bucket]
      ├── beijing
      │   ├── 2014
      │   └── 2015
      ├── hangzhou
      │   ├── 2013
      │   ├── 2014
      │   └── 2015 // Berikan izin baca-saja pada folder ini kepada pengguna RAM.
      └── qingdao
          ├── 2014
          └── 2015

    Anda dapat membuat kebijakan RAM yang berbeda untuk memberikan izin baca-saja pada folder myphotos/hangzhou/2015/ kepada pengguna RAM. Otorisasi berdasarkan direktori adalah fitur lanjutan dari kebijakan RAM. Kompleksitas kebijakan RAM bervariasi berdasarkan skenario. Anda dapat merujuk ke kebijakan RAM dalam skenario berikut untuk memberikan izin kepada pengguna RAM:

    • Skenario 1: Berikan otorisasi kepada pengguna RAM untuk membaca data dari objek di dalam folder, tetapi jangan berikan otorisasi kepada pengguna RAM untuk mencantumkan objek.

      Dalam skenario ini, pengguna RAM dapat menggunakan jalur lengkap untuk membaca data objek. Kami merekomendasikan agar Anda melampirkan kebijakan ini ke aplikasi Anda.

      {
          "Version": "1",
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "oss:GetObject"
                  ],
                  "Resource": [
                      "acs:oss:*:*:myphotos/hangzhou/2015/*"
                  ]
              }
          ]
      }
    • Skenario 2: Berikan otorisasi kepada pengguna RAM untuk menggunakan OSS CLI mengakses folder myphotos/hangzhou/2015/ dan mencantumkan objek di dalam folder.

      Dalam skenario ini, pengguna RAM dapat menggunakan OSS CLI atau memanggil operasi untuk membaca data dari folder. Kami merekomendasikan agar Anda menggunakan kebijakan ini untuk memberikan izin terkait kepada pengembang perangkat lunak Anda.

      Dalam skenario ini, izin ListObjects diperlukan.

      {
          "Version": "1",
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "oss:GetObject"
                  ],
                  "Resource": [
                      "acs:oss:*:*:myphotos/hangzhou/2015/*"
                  ]
              },
              {
                  "Effect": "Allow",
                  "Action": [
                      "oss:ListObjects"
                  ],
                  "Resource": [
                      "acs:oss:*:*:myphotos"
                  ],
                  "Condition":{
                      "StringLike":{
                          "oss:Prefix":"hangzhou/2015/*"
                      }
                  }
              }
          ]
      }
    • Skenario 3: Berikan otorisasi kepada pengguna RAM untuk menggunakan konsol OSS mengakses folder.

      Dalam skenario ini, pengguna RAM dapat menggunakan klien OSS visual (misalnya, Windows File Explorer) untuk mengakses folder myphotos/hangzhou/2015/.

      Izin berikut diperlukan:

      • Izin untuk mencantumkan semua buckets.
      • Izin untuk mencantumkan folder di bawah myphotos.
      • Izin untuk mencantumkan folder di bawah myphotos/hangzhou.
      {
          "Version": "1",
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                            "oss:ListBuckets",
                            "oss:GetBucketStat",
                            "oss:GetBucketInfo",
                            "oss:GetBucketTagging",
                            "oss:GetBucketAcl" 
                            ], 
                  "Resource": [
                      "acs:oss:*:*:*"
                  ]
              },
              {
                  "Effect": "Allow",
                  "Action": [
                      "oss:GetObject",
                      "oss:GetObjectAcl"
                  ],
                  "Resource": [
                      "acs:oss:*:*:myphotos/hangzhou/2015/*"
                  ]
              },
              {
                  "Effect": "Allow",
                  "Action": [
                      "oss:ListObjects"
                  ],
                  "Resource": [
                      "acs:oss:*:*:myphotos"
                  ],
                  "Condition": {
                      "StringLike": {
                          "oss:Delimiter": "/",
                          "oss:Prefix": [
                              "",
                              "hangzhou/",
                              "hangzhou/2015/*"
                          ]
                      }
                  }
              }
          ]
      }