edit-icon download-icon

アクセス権限の設定

最終更新日: Aug 26, 2017

OSS では、バケットとオブジェクトのアクセス権限を個別に設定し、リソースへの外部からのアクセスを簡単に制御できます。バケットで使用できるアクセス権限には、次の 3 つの種類があります:

  • public-read-write: 匿名ユーザーがバケット内のオブジェクトを作成/取得/削除できます。
  • public-read: 匿名ユーザーがバケット内のオブジェクトを取得できます。
  • private: 匿名ユーザーはバケット内のオブジェクトにアクセスできません。すべてのアクセスに署名が必要です。

バケットの作成時には、デフォルトで非公開権限が適用されます。バケットの権限を設定するには Client.SetBucketACL を使用します。Go SDK はそれぞれ3つの ACL に対応しています(ACLPublicReadWrite, ACLPublicRead, and ACLPrivate)。

バケットのアクセス権限

メモ: sample/bucket_acl.go にバケット ACL の例のコードがあります。

  1. import "fmt"
  2. import "github.com/aliyun/aliyun-oss-go-sdk/oss"
  3. client, err := oss.New("Endpoint", "AccessKeyId", "AccessKeySecret")
  4. if err != nil {
  5. // HandleError(err)
  6. }
  7. // Set the bucket ACL
  8. err = client.SetBucketACL("my-bucket", oss.ACLPublicRead)
  9. if err != nil {
  10. // HandleError(err)
  11. }
  12. // View the bucket ACL
  13. aclRes, err := client.GetBucketACL("my-bucket")
  14. if err != nil {
  15. // HandleError(err)
  16. }
  17. fmt.Println("Bucket ACL:", aclRes.ACL)

オブジェクトのアクセス権限

オブジェクトで使用できるアクセス権限には、次の 4 つの種類があります:

  • default: オブジェクトは属しているバケットのアクセス権限を継承します。つまり、オブジェクトのアクセス権限は、オブジェクトが格納されているバケットのアクセス権限と同じです。
  • public-read-write: 匿名ユーザーがオブジェクトを読み書きできます。
  • public-read: 匿名ユーザーがオブジェクトを読み取ることができます。
  • private: 匿名ユーザーはバケット内のオブジェクトにアクセスできません。すべてのアクセスに署名が必要です。

オブジェクトの作成時には、デフォルトでデフォルト権限が適用されます。Bucket.SetObjectACL を使用して、オブジェクトのアクセス権限を設定できます。Go SDK では、4つはそれぞれ(ACLDefault, ACLPublicReadWrite, ACLPublicRead, and ACLPrivate)に対応しています。

メモ: sample/object_acl.go にオブジェクト ACL の例のコードがあります。

  1. import "fmt"
  2. import "github.com/aliyun/aliyun-oss-go-sdk/oss"
  3. client, err := oss.New("Endpoint", "AccessKeyId", "AccessKeySecret")
  4. if err != nil {
  5. // HandleError(err)
  6. }
  7. bucket, err := client.Bucket("my-bucket")
  8. if err != nil {
  9. // HandleError(err)
  10. }
  11. // Set the object ACL
  12. err = bucket.SetObjectACL("my-object", oss.ACLPrivate)
  13. if err != nil {
  14. // HandleError(err)
  15. }
  16. // View the object ACL
  17. aclRes, err := bucket.GetObjectACL("my-object")
  18. if err != nil {
  19. // HandleError(err)
  20. }
  21. fmt.Println("Object ACL:", aclRes.ACL)

注意:

  • Iオブジェクトが ACL ポリシーを使用して設定されている場合 (デフォルト以外)、オブジェクトにアクセスしたときの権限の認証では、オブジェクト ACL が優先されます。バケット ACL は無視されます。
  • 匿名アクセスが許可されている (オブジェクトの公開読み取りまたは公開読み書きが設定されている) 場合、ブラウザーを使用して直接オブジェクトにアクセスできます。たとえば、http://bucket-name.oss-cn-hangzhou.aliyuncs.com/object.jpg など指定してアクセスできます。

ACL に関する詳しい情報は、 RAM を参照ください。