Todos os produtos
Search
Central de documentação

Object Storage Service:Gerenciar permissões de acesso a arquivos (Go SDK V1)

Última atualização: Jul 03, 2026

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

Observações

  • Este tópico usa 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 mais informações sobre regiões e endpoints do OSS, consulte Regiões e endpoints.

  • As credenciais de acesso neste exemplo vêm de variáveis de ambiente. Para saber como configurar credenciais de acesso, consulte Configurar credenciais de acesso.

  • Este exemplo demonstra a criação de uma instância OSSClient com um endpoint do OSS. Para outras configurações, como uso de domínio personalizado ou autenticação via Security Token Service (STS), consulte Configurar um cliente (Go SDK V1).

  • Para configurar a ACL de um objeto, você precisa da permissão oss:PutObjectAcl. Para consultar a ACL, é necessária a permissão oss:GetObjectAcl. Para mais detalhes, consulte Conceder uma política personalizada.

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

Os objetos aceitam os quatro tipos de ACL a seguir:

Permissão de acesso

Descrição

Valor da ACL

Herdar do bucket

O objeto herda a ACL do bucket.

oss.ACLDefault

Privado

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

oss.ACLPrivate

Leitura pública

O proprietário e usuários autorizados têm permissões de leitura e gravação. Outros usuários têm apenas permissão de leitura. Use esta opçã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 opção com cautela.

oss.PublicReadWrite

A ACL do objeto tem precedência sobre a ACL do bucket. Por exemplo, se a ACL do bucket estiver definida como privada, mas a do objeto como leitura e gravação públicas, todos os usuários poderão ler e gravar nesse objeto. Se nenhuma ACL for configurada para o objeto, ele herdará a ACL do bucket.

Código de exemplo

O código abaixo 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 completo, consulte o exemplo no GitHub.

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

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