Todos los productos
Search
Centro de documentos

Object Storage Service:Bucket Policy

Última actualización: Sep 20, 2026

Una bucket policy es una política de autorización basada en recursos que se adjunta a un bucket. Utilice las bucket policies para otorgar acceso entre cuentas, habilitar el acceso anónimo o restringir el acceso por dirección IP o VPC.

Cómo funciona

Una bucket policy utiliza un modelo basado en recursos: se adjunta a un bucket y define qué principals pueden ejecutar qué acciones sobre qué recursos y bajo qué condiciones.

Cuando llega una solicitud, OSS evalúa todas las políticas relevantes, incluidas las bucket policies y las políticas de RAM. La evaluación sigue el principio de denegación prioritaria: cualquier regla Deny explícita bloquea la solicitud sin importar las reglas Allow. Si no existe ninguna regla coincidente, la solicitud se deniega de forma predeterminada.

Las bucket policies tienen reglas especiales para el propietario del bucket:

  • Si el principal se establece con un carácter comodín (*) y la política no incluye una condición, esta se aplica únicamente a los usuarios distintos del propietario del bucket.

  • Si el principal se establece con un carácter comodín (*) y la política incluye una condición, esta se aplica a todos los usuarios, incluido el propietario del bucket y los usuarios anónimos. Una regla Deny puede hacer que todo el bucket quede inaccesible. Una regla Allow puede exponer sus datos a usuarios anónimos.

Si varias instrucciones (statements) aplican al mismo usuario, los permisos efectivos son la unión de todas ellas, siguiendo el principio de denegación prioritaria.

Importante
  • La clave de condición acs:SourceIp coincide solo con la dirección IP de origen de una solicitud y no distingue si proviene de la red pública o de una VPC. Esto significa que, si usa únicamente acs:SourceIp para restringir el acceso, también se permitirán solicitudes desde otra VPC que utilice el mismo rango de direcciones IP, lo cual genera un riesgo de acceso no autorizado. Por lo tanto, cuando configure una Bucket Policy y especifique acs:SourceIp, debe especificar también acs:SourceVpc para identificar de manera explícita el origen de red de la solicitud.

  • Esta restricción aplica solo a las Bucket Policies nuevas. Las Bucket Policies existentes no se ven afectadas. Sin embargo, modificar una Bucket Policy existente se considera un nuevo envío y está sujeta a esta restricción.

Configurar una bucket policy

OSS proporciona dos métodos de configuración: gráfico y de sintaxis.

  • Método gráfico: interfaz basada en formularios para escenarios de autorización comunes.

  • Método de sintaxis: editor basado en JSON que admite todas las funciones de las políticas y combinaciones complejas de condiciones.

Método gráfico

  1. Vaya a la lista Buckets y haga clic en el bucket de destino.

  2. En el panel de navegación izquierdo, haga clic en Permission Control > Bucket Policy.

  3. Seleccione Add in GUI y luego haga clic en Authorize.

    Parámetro

    Descripción

    Applied To

    Seleccione si desea otorgar permisos sobre el Whole Bucket o sobre Specific Resources.

    Resource Paths

    • Si establece Applied To en Whole Bucket, Resource Paths se establece en bucket-name/*.

    • Si establece Applied To en Specific Resources, introduzca el directorio u objeto que desea autorizar. Puede agregar varias entradas.

    Authorized User

    Especifique el principal al que se le otorgarán los permisos.

    • All Accounts (*): otorga permisos a cualquier persona, incluidos los usuarios anónimos.

    • RAM User: seleccione un usuario de RAM que pertenezca a la cuenta actual de Alibaba Cloud.

      La cuenta con la que inició sesión debe ser una cuenta de Alibaba Cloud (cuenta raíz) o un usuario de RAM con permisos de administración de buckets y el permiso ListUsers en RAM. De lo contrario, la lista de usuarios de RAM no será visible.

    • Other Accounts: introduzca el UID de otra cuenta o usuario de RAM que desee autorizar, o bien de un usuario temporal cuyas credenciales comiencen con arn:sts, como arn:sts::1798**:assumed-role/role-name/session-name. Puede autorizar a varios usuarios. Introduzca uno por línea.

      Si otorga permisos a un rol de RAM, dicho rol no podrá acceder a los recursos desde la consola de OSS. En su lugar, use ossutil, un SDK o una API.

    Authorized Operation

    • Simple Settings: seleccione una combinación común de operaciones autorizadas. Las opciones incluyen Read-Only (excluding ListObject), Read-Only (including ListObject), Read/Write, Full Access y Deny Access.

    • Advanced Settings: personalice el Effect (Allow o Reject) y la Operation.

    Condition (opcional)

    Establezca las condiciones bajo las cuales la política surte efecto.

    • Access Method: las opciones incluyen HTTPS y HTTP. Después de seleccionar una opción, la política surte efecto solo para las solicitudes de acceso que usen el método seleccionado.

    • IP =: introduzca una lista de direcciones IP. Si selecciona esta opción, la política surte efecto solo para las solicitudes de acceso provenientes de las direcciones IP especificadas.

    • IP ≠: introduzca una lista de direcciones IP. Si selecciona esta opción, la política surte efecto solo para las solicitudes de acceso que no provengan de las direcciones IP especificadas.

    • VPC =: seleccione una VPC que pertenezca a la cuenta actual o introduzca una VPC de otra cuenta. Si selecciona esta opción, la política surte efecto solo para las solicitudes de acceso provenientes de la VPC especificada.

    • VPC ≠: seleccione una VPC que pertenezca a la cuenta actual o introduzca una VPC de otra cuenta. Si selecciona esta opción, la política surte efecto solo para las solicitudes de acceso que no provengan de la VPC especificada.

    Cuando configura varias condiciones, todas deben cumplirse (relación AND).

  4. Después de confirmar que la configuración es correcta, haga clic en OK para aplicar la Bucket Policy.

Método de sintaxis

  1. Vaya a la lista Buckets y haga clic en el bucket de destino.

  2. En el panel de navegación izquierdo, haga clic en Permission Control > Bucket Policy.

  3. Seleccione Add by Syntax y luego haga clic en Edit. En el editor, introduzca la política de autorización en formato JSON.

    Ejemplo de política: denegar al usuario 20214760404935xxxx todas las operaciones sobre example-bucket si la solicitud de acceso no se origina desde la VPC vpc-t4nlw426y44rd3iq4xxxx.

    {
        "Version": "1",
        "Statement": [
            {
                "Sid": "DenyNonVpcAccess",
                "Effect": "Deny",
                "Action": "oss:*",
                "Principal": [
                    "20214760404935xxxx"
                ],
                "Resource": [
                    "acs:oss:*:174649585760xxxx:example-bucket",
                    "acs:oss:*:174649585760xxxx:example-bucket/*"
                ],
                "Condition": {
                    "StringNotEquals": {
                        "acs:SourceVpc": "vpc-t4nlw426y44rd3iq4xxxx"
                    }
                }
            }
        ]
    }

    Una política de autorización completa incluye un elemento Version y un elemento Statement.

    • Version: la versión de la política de acceso. El valor es fijo en 1 y no se puede cambiar.

    • Statement: el cuerpo principal de la política. Contiene una o más reglas específicas. Cada regla admite un elemento Sid opcional e incluye Effect, Action, Principal, Resource y Condition.

      Elemento de la política

      Descripción

      Significado en el ejemplo

      Sid (opcional)

      Identificador de la instrucción (Statement ID). Es un identificador único y legible para cada instrucción de la política. Facilita la diferenciación, la gestión y la auditoría, pero no afecta los permisos en sí.

      Identifica la instrucción de denegación como DenyNonVpcAccess.

      Effect

      El efecto de la política. Los valores válidos son Allow y Deny.

      Deniega la solicitud.

      Action

      La acción específica que se ejecutará sobre el recurso. Se admite el carácter comodín *.

      Denegar todas las acciones de OSS (oss:*).

      Principal

      El usuario, la cuenta o el rol al que aplica la política.

      Establecer el campo Principal como una lista vacía (Principal:[]) equivale a establecerlo para todas las cuentas (Principal:["*"]).

      La política aplica solo al usuario de RAM 20214760404935xxxx.

      Resource

      Los recursos a los que aplica la política.

      La política aplica al propio bucket example-bucket y a todos los objetos que contiene.

      Condition

      Las condiciones bajo las cuales la política surte efecto.

      Cuando configura varias condiciones, todas deben cumplirse (relación AND).

      Esta política de denegación surte efecto solo cuando la VPC de origen de la solicitud no es vpc-t4nlw426y44rd3iq4xxxx.

      Referencia completa de los elementos de la política: Authorization syntax and elements.

  4. Después de confirmar que la política de autorización es correcta, haga clic en Save y siga las instrucciones en pantalla.

Configurar una bucket policy para un bucket vectorial

Los buckets vectoriales admiten únicamente el método de sintaxis para configurar la bucket policy.

  1. Vaya a la lista Vector Buckets y haga clic en el bucket vectorial de destino.

  2. En el panel de navegación izquierdo, haga clic en Permission Control > Bucket Policy.

  3. Haga clic en Edit. En el editor, introduzca la política de autorización en formato JSON.

    Ejemplo de política: otorgar al usuario 20816353761158**** permisos de lectura y escritura de datos vectoriales para la tabla de índice indextest en vector-bucket-example.

    {
      "Version": "1",
      "Statement": [{
        "Effect": "Allow",
        "Action": [
          "oss:PutVectors",
          "oss:GetVectors"
        ],
        "Principal": [
          "20816353761158****"
        ],
        "Resource": [
          "acs:ossvector:*:*:vector-bucket-example/indextest"
        ]
      }]
    }

    Una política de autorización completa incluye un elemento Version y un elemento Statement.

    • Version: la versión de la política de acceso. El valor es fijo en 1 y no se puede cambiar.

    • Statement: el cuerpo principal de la política. Contiene una o más reglas específicas. Cada regla incluye Effect, Action, Principal, Resource y Condition.

      Elemento de la política

      Descripción

      Significado en el ejemplo

      Effect

      El efecto de la política. Los valores válidos son Allow y Deny.

      Permite la solicitud.

      Action

      La acción específica que se ejecutará sobre el recurso. Se admite el carácter comodín *.

      Leer y escribir datos vectoriales.

      Principal

      El usuario, la cuenta o el rol al que aplica la política.

      Establecer el campo Principal como una lista vacía (Principal:[]) equivale a establecerlo para todas las cuentas (Principal:["*"]).

      La política aplica solo al usuario de RAM 20816353761158****.

      Resource

      Los recursos a los que aplica la política.

      La política aplica a la tabla de índice indextest del bucket vector-bucket-example.

      Condition

      Las condiciones bajo las cuales la política surte efecto.

      Cuando configura varias condiciones, todas deben cumplirse (relación AND).

      Ninguna.

      Referencia completa de los elementos de la política: Authorization syntax and elements.

  4. Después de confirmar que la política de autorización es correcta, haga clic en Save y siga las instrucciones en pantalla.

Configurar una política de OSS-HDFS

Para garantizar que los usuarios del servicio OSS-HDFS puedan acceder al directorio .dlsdata/ y a sus objetos, no establezca la operación autorizada en Deny Access cuando configure una Bucket Policy para un bucket con OSS-HDFS habilitado. Prerequisites for using OSS-HDFS.

Para restringir el acceso a direcciones IP de red específicas o a una VPC, agregue a continuación la siguiente condición a todas las instrucciones Deny. Esto garantiza que el servicio de backend de OSS-HDFS pueda leer y escribir en el bucket a través de la red clásica.

"StringNotLike": {
    "oss:ClassicIntranet": [
        "true"
    ]
}

Escenarios comunes: otorgar permisos

A continuación se muestran escenarios donde se otorga acceso a usuarios, roles o a todos los usuarios. Cada uno incluye un ejemplo de política que usted puede adaptar.

Escenario 1: otorgar permisos de lectura y escritura

Otorgue a los miembros de su equipo o a sus socios acceso de lectura y escritura a un bucket. Este ejemplo otorga permisos de lectura y escritura sobre example-bucket a los usuarios de RAM 27737962156157xxxx y 20214760404935xxxx.

Nota

Esta política no otorga permiso para listar buckets. Los usuarios de RAM no pueden explorar directamente la página Buckets. En su lugar, pueden agregar el bucket de destino en My Favorite Paths > + dentro del panel de navegación izquierdo.

{
    "Version":"1",
    "Statement":[
        {
            "Effect":"Allow",
            "Action":[
                "oss:GetObject",
                "oss:PutObject",
                "oss:GetObjectAcl",
                "oss:PutObjectAcl",
                "oss:AbortMultipartUpload",
                "oss:ListParts",
                "oss:RestoreObject",
                "oss:GetVodPlaylist",
                "oss:PostVodPlaylist",
                "oss:PublishRtmpStream",
                "oss:ListObjectVersions",
                "oss:GetObjectVersion",
                "oss:GetObjectVersionAcl",
                "oss:RestoreObjectVersion"
            ],
            "Principal":[
                "27737962156157xxxx",
                "20214760404935xxxx"
            ],
            "Resource":[
                "acs:oss:*:174649585760xxxx:example-bucket/*"
            ]
        },
        {
            "Effect":"Allow",
            "Action":[
                "oss:ListObjects"
            ],
            "Principal":[
                "27737962156157xxxx",
                "20214760404935xxxx"
            ],
            "Resource":[
                "acs:oss:*:174649585760xxxx:example-bucket"
            ],
            "Condition":{
                "StringLike":{
                    "oss:Prefix":[
                        "*"
                    ]
                }
            }
        }
    ]
}

Escenario 2: otorgar permisos de solo lectura a directorios específicos

Otorgue acceso de solo lectura a directorios específicos. Este ejemplo otorga al usuario de RAM 20214760404935xxxx permisos de solo lectura sobre los directorios con los prefijos hangzhou/2020 y shanghai/2015 en example-bucket.

Nota

Esta política no otorga permiso para listar buckets. Los usuarios de RAM no pueden explorar directamente la página Buckets. En su lugar, pueden agregar el bucket de destino en My Favorite Paths > + dentro del panel de navegación izquierdo.

{
    "Version":"1",
    "Statement":[
        {
            "Action":[
                "oss:GetObject",
                "oss:GetObjectAcl",
                "oss:GetObjectVersion",
                "oss:GetObjectVersionAcl"
            ],
            "Effect":"Allow",
            "Principal":[
                "20214760404935xxxx"
            ],
            "Resource":[
                "acs:oss:*:174649585760xxxx:example-bucket/hangzhou/2020/*",
                "acs:oss:*:174649585760xxxx:example-bucket/shanghai/2015/*"
            ]
        },
        {
            "Action":[
                "oss:ListObjects",
                "oss:ListObjectVersions"
            ],
            "Condition":{
                "StringLike":{
                    "oss:Prefix":[
                        "hangzhou/2020/*",
                        "shanghai/2015/*"
                    ]
                }
            },
            "Effect":"Allow",
            "Principal":[
                "20214760404935xxxx"
            ],
            "Resource":[
                "acs:oss:*:174649585760xxxx:example-bucket"
            ]
        }
    ]
}

Escenario 3: otorgar permisos de visualización y listado

Permita que un usuario consulte la información del bucket y liste los objetos. Este ejemplo otorga a un usuario de RAM permisos de visualización y listado sobre example-bucket.

Nota

Esta política no otorga permiso para listar buckets. Los usuarios de RAM no pueden explorar directamente la página Buckets. En su lugar, pueden agregar el bucket de destino en My Favorite Paths > + dentro del panel de navegación izquierdo.

{
    "Version":"1",
    "Statement":[
        {
            "Action":[
                "oss:Get*",
                "oss:ListObjects",
                "oss:ListObjectVersions"
            ],
            "Effect":"Allow",
            "Principal":[
                "20214760404935xxxx"
            ],
            "Resource":[
                "acs:oss:*:174649585760xxxx:example-bucket"
            ]
        }
    ]
}

Escenario 4: otorgar permisos de lectura a un rol de RAM

Otorgue acceso temporal a los objetos del bucket mediante un rol de RAM. Un usuario de RAM o una aplicación asume el rol para obtener credenciales temporales. Este ejemplo otorga permisos de lectura sobre todos los objetos de example-bucket a todas las sesiones de un rol de RAM y a una sesión específica de otro rol.

Nota

Cuando otorgue permisos a un rol de RAM, el elemento Principal debe seguir este formato: arn:sts::<uid>:assumed-role/<role-name>/<session-name>. Los valores de <role-name> y <session-name> deben estar completamente en minúsculas.

{
    "Version": "1",
    "Statement": [
        {
            "Action": [
                "oss:GetObject"
            ],
            "Effect": "Allow",
            "Principal": [
                "arn:sts::10323xxxxx72056:assumed-role/role-name/session-name",
                "arn:sts::10323xxxxx72056:assumed-role/role2-name/*"
            ],
            "Resource": [
                "acs:oss:*:10323xxxxx72056:example-bucket/*"
            ]
        }
    ]
}

Escenario 5: otorgar permisos de listado a todos los usuarios

Permita que todos los usuarios listen los objetos sin acceder a su contenido. Este ejemplo otorga a todos los usuarios (*) permisos de listado sobre example-bucket.

{
    "Version":"1",
    "Statement":[
        {
            "Action":[
                "oss:ListObjects",
                "oss:ListObjectVersions"
            ],
            "Effect":"Allow",
            "Principal":[
                "*"
            ],
            "Resource":[
                "acs:oss:*:174649585760xxxx:example-bucket"
            ]
        }
    ]
}

Escenarios comunes: restringir el acceso de red

A continuación se presentan escenarios donde se restringe el acceso al bucket según el origen de red (IP pública o VPC) mediante las claves de condición acs:SourceIp y acs:SourceVpc. La siguiente tabla resume los enfoques más comunes.

Origen de acceso

Enfoque de la política

Escenario

Cualquier VPC

Denegar las solicitudes donde acs:SourceVpc no comience con vpc-*.

Scenario 1: Restrict public network access

VPC específica

Denegar las solicitudes donde acs:SourceVpc no sea igual al ID de la VPC especificada.

Scenario 2: Restrict access to a specific VPC

IP pública específica

La instrucción 1 deniega las solicitudes de red pública provenientes de direcciones IP no especificadas; la instrucción 2 deniega todas las solicitudes de VPC.

Scenario 3: Restrict access to a specific public IP address

Rango de IP específico dentro de una VPC específica

La instrucción 1 deniega las solicitudes provenientes de VPC no especificadas; la instrucción 2 deniega las solicitudes de rangos de IP no especificados dentro de la VPC indicada.

Scenario 4: Restrict access to an IP range in a VPC

IP pública específica o VPC específica

La instrucción 1 deniega las solicitudes de red pública provenientes de direcciones IP no especificadas; la instrucción 2 deniega las solicitudes de VPC provenientes de redes no especificadas.

Scenario 5: Restrict access to a public IP or VPC

Todo excepto una IP específica (lista negra)

Denegar las solicitudes provenientes de la IP especificada y usar el comodín * en SourceVpc para cumplir con la restricción.

Scenario 6: Set an IP blacklist

Red clásica

Permitir el acceso desde la red clásica.

Scenario 7: Configure classic network access

Escenario 1: restringir el acceso a la red pública

Bloquee todo el acceso desde la red pública a un bucket mediante una instrucción de denegación con la clave de condición acs:SourceVpc. Esta instrucción deniega las solicitudes que no se originan desde una VPC. El siguiente ejemplo deniega todo el acceso que no provenga de una VPC hacia example-bucket.

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Deny",
      "Action": "oss:*",
      "Principal": [
        "*"
      ],
      "Resource": [
        "acs:oss:*:174649585760xxxx:example-bucket/*",
        "acs:oss:*:174649585760xxxx:example-bucket"
      ],
      "Condition": {
        "StringNotLike": {
          "acs:SourceVpc": [
            "vpc-*"
          ]
        }
      }
    }
  ]
}

Escenario 2: restringir el acceso a una VPC específica

Restrinja el acceso al bucket a una VPC específica mediante la clave de condición acs:SourceVpc. Esta instrucción bloquea las solicitudes provenientes de otras VPC o de la red pública. El siguiente ejemplo impide que todos los usuarios fuera de la VPC t4nlw426y44rd3iq4xxxx lean los objetos de example-bucket.

Nota
  • Dado que el principal de a continuación la instrucción de denegación es un carácter comodín (*) y se incluye una condición, la instrucción aplica a todos los usuarios, incluido el propietario del bucket.

  • La siguiente instrucción de denegación solo restringe el acceso y no otorga ningún permiso. Si el principal aún no tiene permisos asignados, agregue una instrucción de permiso (allow) para otorgarle los accesos necesarios.

{
    "Version":"1",
    "Statement":[
        {
            "Effect":"Deny",
            "Action":[
                "oss:GetObject"
            ],
            "Principal":[
                "*"
            ],
            "Resource":[
                "acs:oss:*:174649585760xxxx:example-bucket/*"
            ],
            "Condition":{
                "StringNotEquals":{
                    "acs:SourceVpc":[
                        "vpc-t4nlw426y44rd3iq4xxxx"
                    ]
                }
            }
        }
    ]
}

Escenario 3: restringir el acceso a una dirección IP pública específica

Para restringir el acceso al bucket a una dirección IP pública específica, cree dos instrucciones de denegación:

  • Instrucción 1 (denegar solicitudes de red pública desde direcciones IP no especificadas): esta instrucción usa StringNotLike: {"acs:SourceVpc": "vpc-*"} para identificar las solicitudes de red pública (el valor de acs:SourceVpc en una solicitud de red pública no comienza con vpc-). Luego emplea NotIpAddress: {"acs:SourceIp": "..."} para denegar las solicitudes que no provengan de la dirección IP especificada. La acción de denegación se activa cuando se cumplen ambas condiciones.

  • Instrucción 2 (denegar todas las solicitudes de VPC): esta instrucción usa StringLike: {"acs:SourceVpc": "vpc-*"} para coincidir con todas las solicitudes de cualquier VPC y denegarlas, ya que el objetivo es permitir el acceso únicamente desde la dirección IP pública especificada.

Una solicitud se deniega si coincide con cualquiera de las dos instrucciones. El siguiente ejemplo deniega el acceso de lectura a example-bucket para todos los usuarios, excepto aquellos que provengan de la IP pública 203.0.113.5.

Nota
  • Dado que el principal de a continuación la instrucción de denegación es un carácter comodín (*) y se incluye una condición, la instrucción aplica a todos los usuarios, incluido el propietario del bucket.

  • La siguiente instrucción de denegación solo restringe el acceso y no otorga ningún permiso. Si el principal aún no tiene permisos asignados, agregue una instrucción de permiso (allow) para otorgarle los accesos necesarios.

{
  "Version": "1",
  "Statement": [{
    "Effect": "Deny",
    "Action": [
      "oss:GetObject"
    ],
    "Principal": [
      "*"
    ],
    "Resource": [
      "acs:oss:*:174649585760xxxx:example-bucket/*"
    ],
    "Condition": {
      "NotIpAddress": {
        "acs:SourceIp": [
          "203.0.113.5"
        ]
      },
      "StringNotLike": {
        "acs:SourceVpc": [
          "vpc-*"
        ]
      }
    }
  },
    {
      "Effect": "Deny",
      "Action": [
        "oss:GetObject"
      ],
      "Principal": [
        "*"
      ],
      "Resource": [
        "acs:oss:*:174649585760xxxx:example-bucket/*"
      ],
      "Condition": {
        "StringLike": {
          "acs:SourceVpc": [
            "vpc-*"
          ]
        }
      }
    }
  ]
}

Escenario 4: restringir el acceso a un rango de IP en una VPC

Para restringir el acceso al bucket a un rango de IP específico dentro de una VPC determinada, cree dos instrucciones de denegación:

  • Instrucción 1 (denegar todas las solicitudes externas a la VPC especificada): esta instrucción usa StringNotEquals: {"acs:SourceVpc": "..."} para denegar las solicitudes provenientes de otras VPC y de la red pública.

  • Instrucción 2 (denegar solicitudes externas al rango de IP especificado dentro de la VPC): esta instrucción usa StringEquals: {"acs:SourceVpc": "..."} para coincidir con las solicitudes de la VPC especificada y luego emplea NotIpAddress: {"acs:SourceIp": "..."} para denegar las solicitudes que no provengan del rango de direcciones IP indicado. La acción de denegación se activa cuando se cumplen ambas condiciones.

Una solicitud se deniega si coincide con cualquiera de las dos instrucciones. El siguiente ejemplo deniega el acceso de lectura a example-bucket para todos los usuarios, excepto aquellos que provengan del rango 192.168.0.0/16 dentro de la VPC t4nlw426y44rd3iq4xxxx.

Nota
  • Dado que el principal de a continuación la instrucción de denegación es un carácter comodín (*) y se incluye una condición, la instrucción aplica a todos los usuarios, incluido el propietario del bucket.

  • La siguiente instrucción de denegación solo restringe el acceso y no otorga ningún permiso. Si el principal aún no tiene permisos asignados, agregue una instrucción de permiso (allow) para otorgarle los accesos necesarios.

{
    "Version":"1",
    "Statement":[
        {
            "Effect":"Deny",
            "Action":[
                "oss:GetObject"
            ],
            "Principal":[
                "*"
            ],
            "Resource":[
                "acs:oss:*:174649585760xxxx:example-bucket/*"
            ],
            "Condition":{
                "StringNotEquals":{
                    "acs:SourceVpc":[
                        "vpc-t4nlw426y44rd3iq4xxxx"
                    ]
                }
            }
        },
        {
            "Effect":"Deny",
            "Action":[
                "oss:GetObject"
            ],
            "Principal":[
                "*"
            ],
            "Resource":[
                "acs:oss:*:174649585760xxxx:example-bucket/*"
            ],
            "Condition":{
                "StringEquals":{
                    "acs:SourceVpc":[
                        "vpc-t4nlw426y44rd3iq4xxxx"
                    ]
                },
                "NotIpAddress":{
                    "acs:SourceIp":[
                        "192.168.0.0/16"
                    ]
                }
            }
        }
    ]
}

Escenario 5: restringir el acceso a una IP pública o una VPC

Para restringir el acceso al bucket a una IP pública o una VPC específica, cree dos instrucciones de denegación:

  • Instrucción 1 (para solicitudes de red pública, denegar IP no especificadas): esta instrucción usa StringNotLike: {"acs:SourceVpc": "vpc-*"} para identificar las solicitudes de red pública y luego emplea NotIpAddress: {"acs:SourceIp": "..."} para denegar las solicitudes provenientes de direcciones IP públicas no especificadas. La acción de denegación se activa cuando se cumplen ambas condiciones. Las solicitudes de VPC no coinciden con esta instrucción porque su valor de acs:SourceVpc comienza con vpc-.

  • Instrucción 2 (para solicitudes de VPC, denegar VPC no especificadas): esta instrucción usa StringLike: {"acs:SourceVpc": "vpc-*"} para identificar las solicitudes de VPC y luego emplea StringNotEquals: {"acs:SourceVpc": "..."} para denegar las solicitudes provenientes de VPC no especificadas. La acción de denegación se activa cuando se cumplen ambas condiciones. Las solicitudes de red pública no coinciden con esta instrucción porque su valor de acs:SourceVpc no comienza con vpc-.

Una solicitud se deniega si coincide con cualquiera de las dos instrucciones. El siguiente ejemplo deniega el acceso de lectura a example-bucket para todos los usuarios, excepto aquellos que provengan de la IP pública 203.0.113.5 o de la VPC t4nlw426y44rd3iq4xxxx.

Nota
  • Dado que el principal de a continuación la instrucción de denegación es un carácter comodín (*) y se incluye una condición, la instrucción aplica a todos los usuarios, incluido el propietario del bucket.

  • La siguiente instrucción de denegación solo restringe el acceso y no otorga ningún permiso. Si el principal aún no tiene permisos asignados, agregue una instrucción de permiso (allow) para otorgarle los accesos necesarios.

{
    "Version":"1",
    "Statement":[
        {
            "Effect":"Deny",
            "Action":[
                "oss:GetObject"
            ],
            "Principal":[
                "*"
            ],
            "Resource":[
                "acs:oss:*:174649585760xxxx:example-bucket/*"
            ],
            "Condition":{
                "StringNotLike":{
                    "acs:SourceVpc":[
                        "vpc-*"
                    ]
                },
                "NotIpAddress":{
                    "acs:SourceIp":[
                        "203.0.113.5"
                    ]
                }
            }
        },
        {
            "Effect":"Deny",
            "Action":[
                "oss:GetObject"
            ],
            "Principal":[
                "*"
            ],
            "Resource":[
                "acs:oss:*:174649585760xxxx:example-bucket/*"
            ],
            "Condition":{
                "StringLike":{
                    "acs:SourceVpc":[
                        "vpc-*"
                    ]
                },
                "StringNotEquals":{
                    "acs:SourceVpc":[
                        "vpc-t4nlw426y44rd3iq4xxxx"
                    ]
                }
            }
        }
    ]
}

Escenario 6: configurar una lista negra de IP

Bloquee el acceso desde direcciones IP o rangos específicos mediante una instrucción de denegación en la bucket policy.

La condición StringLike: {"acs:SourceVpc": "*"} usa un comodín para coincidir con todos los valores y no restringe el alcance de la VPC. Existe únicamente para cumplir con la restricción que exige que acs:SourceIp tenga una condición acs:SourceVpc correspondiente.

Nota
  • Dado que el principal de a continuación la instrucción de denegación es un carácter comodín (*) y se incluye una condición, la instrucción aplica a todos los usuarios, incluido el propietario del bucket.

  • Puede configurar varias direcciones IP y rangos de direcciones IP. Sepárelos con comas.

{
  "Version": "1",
  "Statement": [{
    "Effect": "Deny",
    "Action": "oss:*",
    "Principal": [
      "*"
    ],
    "Resource": [
      "acs:oss:*:174649585760xxxx:example-bucket/*",
      "acs:oss:*:174649585760xxxx:example-bucket"
    ],
    "Condition": {
      "IpAddress": {
        "acs:SourceIp": [
          "101.***.***.100"
        ]
      },
      "StringLike": {
        "acs:SourceVpc": [
          "*"
        ]
      }
    }
  }]
}

Escenario 7: Configurar el acceso a la red clásica

La clave de condición oss:ClassicIntranet indica si una solicitud se origina en la red clásica de OSS. Los valores válidos son true y false. Algunos servicios de backend de OSS (como la entrega de registros y el inventario de buckets) acceden a los buckets mediante la red clásica. Utilice la siguiente condición para identificar las solicitudes provenientes de dicha red.

"Condition": {
    "StringEquals": {
        "oss:ClassicIntranet": [
            "true"
        ]
    }
}

Cuando configure restricciones de acceso a la red (políticas Deny), agregue la siguiente condición al bloque Condition de la instrucción Deny. De esta manera, se excluyen las solicitudes de la red clásica y se evita que los servicios de backend mencionados queden bloqueados por error.

"StringNotEquals": {
    "oss:ClassicIntranet": [
        "true"
    ]
}

Escenarios comunes: controles de seguridad

A continuación se presentan escenarios que aplican controles de seguridad: restricciones de credenciales, prevención de acceso público y límites en las políticas de retención.

Escenario 1: Exigir credenciales temporales para las llamadas a la API

Exija credenciales de acceso temporales para las llamadas a la API. Esta política utiliza la clave de condición acs:AccessId para bloquear el acceso con credenciales de larga duración (claves de acceso de la cuenta de Alibaba Cloud o de usuarios de RAM). En el siguiente ejemplo se deniega a todos los usuarios sin credenciales temporales (que comiencen con TMP. o STS.) la visualización de example-bucket y la enumeración de sus objetos.

{
    "Version": "1",
    "Statement": [
        {            
            "Effect": "Deny",
            "Action":[
                "oss:Get*",
                "oss:ListObjects",
                "oss:ListObjectVersions"
            ],
            "Principal":[
                "*"
            ],
            "Resource":[
                "acs:oss:*:174649585760xxxx:example-bucket/*"
            ],
            "Condition": {
                "StringNotLike": {
                    "acs:AccessId": [
                        "TMP.*",
                        "STS.*"
                 ]
                }
            }
        }
    ]
}

Escenario 2: Prohibir ACL públicas

Evite que las ACL de buckets y objetos se configuren como públicas. Cree dos instrucciones de denegación:

  • Utilice la clave de condición oss:x-oss-acl para crear una instrucción de denegación. Esta impide que la ACL del bucket se establezca con cualquier permiso distinto de private. Cualquier intento de configurar una ACL public-read o public-read-write activa la regla de denegación.

  • Emplee la clave de condición oss:x-oss-object-acl para generar otra instrucción de denegación. Con ella se evita que la ACL de un objeto tenga un permiso diferente de private y default.

Si una solicitud coincide con alguna de estas instrucciones, se deniega. El siguiente ejemplo bloquea las operaciones de ACL públicas en example-bucket.

{
    "Version": "1",
    "Statement": [
        {            
            "Effect": "Deny",
            "Action": [
                "oss:PutBucketAcl"
            ],
            "Principal": [
                "*"
            ],
            "Resource": [
                "acs:oss:*:*:example-bucket"
            ],
            "Condition": {
                "StringNotEquals": {
                    "oss:x-oss-acl": "private"
                }
            }
        },
        {            
            "Effect": "Deny",
            "Action": [
                "oss:PutObjectAcl"
            ],
            "Principal": [
                "*"
            ],
            "Resource": [
                "acs:oss:*:*:example-bucket/*"
            ],
            "Condition": {
                "StringNotEquals": {
                    "oss:x-oss-object-acl": [
                        "private",
                        "default"
                    ]
                }
            }
        }
    ]
}

Escenario 3: Limitar el periodo de retención de ObjectWorm

Después de habilitar una política de retención a nivel de objeto (ObjectWorm) para un bucket, utilice una bucket policy para limitar el periodo máximo de retención. En el siguiente ejemplo se restringe la retención a 30 días. Se deniega cualquier solicitud PutObjectRetention que supere este plazo.

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "oss:PutObjectRetention"
      ],
      "Principal": [
        "*"
      ],
      "Resource": [
        "acs:oss:*:174649585760xxxx:example-bucket/*"
      ],
      "Condition": {
        "NumericGreaterThan": {
          "oss:object-remaining-retention-days": "30"
        }
      }
    }
  ]
}
Nota
  • oss:object-remaining-retention-days es la clave de condición de una política de ObjectWorm. Representa la cantidad de días de retención restantes especificada en la solicitud.

  • Dado que el principal de esta política es un carácter comodín (*) e incluye una condición, se aplica a todos los usuarios, incluido el propietario del bucket.

Desarrollo e integración de herramientas

Además de la consola, puede configurar bucket policies mediante herramientas gráficas, herramientas de CLI y SDK.

  • Usar la herramienta gráfica ossbrowser

    ossbrowser ofrece una experiencia visual similar a la consola para gestionar políticas a nivel de bucket. Instale ossbrowser, inicie sesión y luego configure la política.

  • Usar la herramienta de línea de comandos ossutil

    Establezca la política de autorización con el comando put-bucket-policy.

    Nota

    Para establecer una política de autorización en un bucket vectorial, ejecute el comando ossutil vectors-api put-bucket-policy.

  • Usar un SDK

    Configure las políticas con SDK como Java SDK, Python SDK, Go SDK y Node.js SDK. La sección SDK reference abarca todos los lenguajes compatibles.

  • Llamar directamente a una API

    Llame a la operación PutBucketPolicy para establecer una política de autorización de bucket.

Cuotas y límites

  • Tamaño de la política: un bucket admite varias instrucciones de Bucket Policy, pero el tamaño total de todas las políticas no debe superar los 16 KB.

  • Longitud de los campos: cada campo de una Bucket Policy tiene una longitud máxima de 4,095 bytes.

Documentos relacionados