Todos os produtos
Search
Central de documentação

Object Storage Service:Manage file access permissions (Go SDK V1)

Última atualização: Sep 22, 2026

Use o OSS SDK for Go V1 para definir e consultar listas de controle de acesso (ACLs) de objetos no OSS.

Observações

  • Neste tópico, usamos o endpoint público da região China (Hangzhou). Para acessar o OSS a partir de outros serviços da Alibaba Cloud na mesma região, use um endpoint interno. Para obter mais informações sobre regiões e endpoints do OSS, consulte Regions and endpoints.

  • Neste tópico, as credenciais de acesso são obtidas a partir de variáveis de ambiente. Para obter mais informações sobre como configurar credenciais de acesso, consulte Configure access credentials.

  • Este tópico demonstra como criar uma instância OSSClient com um endpoint do OSS. Para configurações alternativas, como usar um domínio personalizado ou autenticar-se com credenciais do Security Token Service (STS), consulte Configure a client (Go SDK V1).

  • Para configurar a ACL de um objeto, é necessária a permissão oss:PutObjectAcl. Para consultar ACLs de objetos, é necessária a permissão oss:GetObjectAcl. Para obter mais informações, consulte Grant a custom policy.

Tipos de permissões de leitura e gravação

Os objetos aceitam os quatro tipos de ACL a seguir:

Permissão de acesso

Descrição

Valor da ACL

Herdada do bucket

O objeto herda a ACL do bucket.

oss.ACLDefault

Privada

Somente o proprietário do objeto e usuários autorizados têm permissões de leitura e gravação no objeto. Outros usuários não podem acessar o objeto.

oss.ACLPrivate

Leitura pública

O proprietário do objeto e usuários autorizados têm permissões de leitura e gravação no objeto. Outros usuários têm apenas permissões de leitura. Use esta permissão com cautela.

oss.ACLPublicRead

Leitura e gravação públicas

Todos os usuários têm permissões de leitura e gravação no objeto. Use esta permissão com cautela.

oss.PublicReadWrite

As ACLs de objetos têm precedência sobre as ACLs de buckets. Por exemplo, se a ACL de um bucket estiver definida como privada e a ACL de um objeto como leitura e gravação públicas, todos os usuários terão permissões de leitura e gravação no objeto. Se nenhuma ACL estiver configurada para um objeto, ele herdará a ACL do bucket.

Código de exemplo

O código de exemplo a seguir mostra como definir e consultar ACLs de objetos:

package main

import (
	"log"

	"github.com/aliyun/aliyun-oss-go-sdk/oss"
)

func main() {
	// Obtain access credentials from environment variables. Before you run this sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set.
	provider, err := oss.NewEnvironmentVariableCredentialsProvider()
	if err != nil {
		log.Fatalf("Failed to create credentials provider: %v", err)
	}

	// Create an OSSClient instance.
	// Set yourEndpoint to the Endpoint of the bucket. For example, for the China (Hangzhou) region, set the Endpoint to https://oss-cn-hangzhou.aliyuncs.com. For other regions, set the Endpoint as needed.
	// Set yourRegion to the region where the bucket is located. For example, for the China (Hangzhou) region, set the value to cn-hangzhou. For other regions, set the value as needed.
	clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
	clientOptions = append(clientOptions, oss.Region("yourRegion"))
	// Set the signature version.
	clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
	client, err := oss.New("yourEndpoint", "", "", clientOptions...)
	if err != nil {
		log.Fatalf("Failed to create OSS client: %v", err)
	}

	// Set yourBucketName to the name of the bucket.
	bucketName := "yourBucketName"
	bucket, err := client.Bucket(bucketName)
	if err != nil {
		log.Fatalf("Failed to get bucket '%s': %v", bucketName, err)
	}

	// Set the ACL of the object.
	// Set yourObjectName to the full path of the object. Do not include the bucket name.
	objectName := "yourObjectName"
	err = bucket.SetObjectACL(objectName, oss.ACLPublicReadWrite)
	if err != nil {
		log.Fatalf("Failed to set object ACL for '%s': %v", objectName, err)
	}

	// Get the ACL of the object.
	aclRes, err := bucket.GetObjectACL(objectName)
	if err != nil {
		log.Fatalf("Failed to get object ACL for '%s': %v", objectName, err)
	}

	log.Printf("Object ACL for '%s': %s", objectName, aclRes.ACL)
}

Referências

  • Para obter o código de exemplo completo, consulte Exemplo no GitHub.

  • Para obter mais informações sobre a operação de API para definir ACLs de objetos, consulte SetObjectACL.

  • Para obter mais informações sobre a operação de API para consultar ACLs de objetos, consulte GetObjectACL.