Skip to main content
Estas configurações estão disponíveis em system.settings e são geradas automaticamente a partir do código-fonte.

s3_allow_multipart_copy

Permite cópia em múltiplas partes no S3.

s3_allow_parallel_part_upload

Usa várias threads no upload multipart do S3. Isso pode resultar em uso de memória ligeiramente maior

s3_allow_server_credentials_in_user_queries

Permite que o acesso ao S3 originado de SQL do usuário use credenciais gerenciadas pelo servidor. Quando desabilitado (o padrão), as funções de tabela s3/s3Cluster, os motores S3/S3Queue, as named collections de S3, as definições dinâmicas de disk(type=s3, ...), BACKUP/RESTORE TO S3, as leituras de dados de tabela do DataLake e os bancos de dados DataLakeCatalog (Glue, BigLake) não podem resolver credenciais do ambiente, dos metadados da instância (IMDS), do IRSA, ECS, perfil da instância, SSO, arquivos de config/credenciais da AWS ou do serviço de metadados OAuth do GCP. Uma solicitação que peça uma dessas fontes gerenciadas pelo servidor (por exemplo, use_environment_credentials = 1 ou http_client = gcp_oauth) sem fornecer credenciais explícitas utilizáveis é rejeitada com ACCESS_DENIED. Uma solicitação que não peça nenhuma delas é enviada sem assinatura (anônima), da mesma forma que se NOSIGN tivesse sido fornecido. O STS assume-role baseado em role_arn (extra_credentials(role_arn = '...')) continua permitido mesmo quando esta configuração está desabilitada: a função de destino deve confiar explicitamente na identidade sob a qual o servidor é executado, e apenas as credenciais da função assumida assinam as solicitações S3 da consulta, portanto as próprias credenciais do servidor não são expostas à consulta. Esta é a forma documentada de conceder ao ClickHouse Cloud acesso a um bucket privado. A função é assumida com as próprias chaves-base da consulta quando ela fornece um par completo; caso contrário, a chamada STS AssumeRole é assinada pela identidade de ambiente do servidor. Chaves estáticas da config <s3>/endpoint do servidor ou de uma named collection nunca são usadas como base STS para uma função fornecida pela consulta, e um role_arn configurado na config <s3> do servidor não é aplicado a consultas de usuário de forma alguma. Definições dinâmicas de disk(type=s3, role_arn=...) continuam cobertas pela restrição. Se uma solicitação sem credenciais pede credenciais de ambiente é algo determinado por use_environment_credentials. As named collections o definem como 0 por padrão, então uma collection que especifica apenas uma URL lê anonimamente. As funções de tabela s3/s3Cluster e os motores S3/S3Queue usam o padrão interno (1), a menos que a config <s3> do servidor o defina de outra forma; defina <s3><use_environment_credentials>0</use_environment_credentials></s3> para fazer com que as leituras sem credenciais também sejam anônimas por padrão (caso contrário, essa solicitação é recusada e deve usar NOSIGN). Discos definidos na configuração do servidor não são afetados e continuam usando credenciais de ambiente por padrão; definições dinâmicas de disk(type = s3, ...) criadas pelo usuário são cobertas pela restrição (veja acima) e são rejeitadas quando dependem de credenciais padrão/de ambiente. Isso impede que um usuário autenticado faça o servidor acessar o S3 com suas próprias credenciais de ambiente. As credenciais fornecidas explicitamente não são afetadas: chaves passadas na consulta, chaves estáticas em uma named collection (criada via SQL ou definida na config) e chaves na config <s3> do servidor continuam funcionando. A forma recomendada de conceder acesso ao S3 para consultas de usuário é usar uma named collection com credenciais explícitas (ou NOSIGN para public buckets): as chaves ficam fora do texto da consulta, e o uso de cada collection é controlado com RBAC (GRANT NAMED COLLECTION ON <name> TO <user>), assim você concede a usuários específicos buckets específicos em vez de expor a identidade do próprio servidor. Escopo (deliberadamente fora do escopo): esta configuração bloqueia apenas as fontes de credenciais de ambiente do servidor listadas acima. Ela não bloqueia access_key_id/secret_access_key estáticos provisionados pelo operador a partir da config <s3> do servidor ou de uma named collection definida em config: eles são tratados como credenciais explícitas e continuam funcionando. Observe, no entanto, que material de solicitação da config, como access_header ou chaves de criptografia server-side, não é, por si só, tratado aqui como credencial: uma solicitação que carregue apenas esse material, mas nenhum par de chaves explícito (e o padrão use_environment_credentials = 1), ainda será recusada, porque, de outra forma, recorreria às credenciais de ambiente do servidor. Esse endpoint também deve fornecer chaves explícitas, NOSIGN, use_environment_credentials = 0 ou a exceção abaixo. Um cliente administrativo confiável pode precisar de credenciais gerenciadas pelo servidor para operações legítimas (por exemplo, anexar tabelas de sistema em um disco s3_plain_rewritable via SQL). Habilite esta configuração na sessão ou no perfil de configurações desse cliente para permitir isso. Para BACKUP/RESTORE ... ON CLUSTER, o valor desta configuração do iniciador é propagado para os outros hosts e usado neles como está. Esses hosts executam a continuação da operação em cada host por meio da fila de DDL distribuído, por padrão sem o usuário do iniciador e, caso contrário, avaliariam a restrição em relação ao próprio perfil padrão; o valor do iniciador é preservado, pois ele já abriu o mesmo destino de backup com suas próprias configurações restritas. Uma restrição readonly no iniciador ainda se aplica (um iniciador não confiável não pode habilitar a configuração para seu próprio backup no cluster), portanto isso não enfraquece a restrição. Durabilidade de tabelas persistentes S3 e S3Queue: habilitar isso apenas por sessão ou perfil não resiste a uma reinicialização. Quando o servidor recarrega uma tabela desse tipo a partir da definição armazenada (na inicialização ou em RESTORE), ele recria o client do S3 e reaplica a restrição com o contexto de inicialização. Assim, uma tabela que dependia de credenciais gerenciadas pelo servidor e foi criada apenas em uma sessão/perfil com s3_allow_server_credentials_in_user_queries = 1 é criada com sucesso, mas se torna inacessível após uma reinicialização (a tabela permanece no lugar; as consultas a ela falham até que as credenciais voltem a ser resolvidas para uma origem permitida). O próprio servidor continua iniciando normalmente. Forneça a essas tabelas credenciais explícitas para garantir acesso persistente; como alternativa, habilitar a configuração no servidor inteiro faz com que elas continuem sendo carregadas após reinicializações, ao custo de afrouxar a restrição para todos os recarregamentos. Para mantê-la desabilitada para usuários não confiáveis, fixe-a no perfil deles definindo explicitamente o valor como 0 e marcando-a como readonly:
Esta configuração não tem efeito no clickhouse-local, em que o usuário é o operador. Os bancos de dados DataLakeCatalog (Glue, BigLake) também são abrangidos, com uma diferença. Um objeto de catálogo é criado uma única vez e compartilhado por todos os usuários do banco de dados, portanto o valor não pode ser lido por consulta; ele é capturado da sessão que executa CREATE DATABASE (ou por um usuário com ATTACH DATABASE). Um banco de dados criado enquanto esta configuração está habilitada (por exemplo, em uma sessão ou perfil confiável) pode usar as credenciais de ambiente do servidor para seu catálogo, e todos os usuários capazes de consultar esse banco de dados então as compartilham; se for criado com o padrão, o catálogo ficará restrito para todos, independentemente de quem o consultar. Quando o servidor carrega um banco de dados já criado a partir de seus próprios metadados (inicialização, RESTORE), a restrição é reaplicada com o contexto de inicialização, da mesma forma que para tabelas persistentes S3/S3Queue: um catálogo que resolve credenciais gerenciadas pelo servidor permanece indisponível, e o banco de dados se torna inacessível após uma reinicialização (o servidor ainda inicia; o banco de dados é carregado com um catálogo indisponível conforme s3_load_table_anonymously_if_credentials_restricted, e as consultas relatam a restrição). Um catálogo ao qual são fornecidas credenciais explícitas (Glue: aws_access_key_id e aws_secret_access_key; BigLake: uma tripla completa do Google ADC) funciona independentemente disso e permanece estável após a reinicialização.
Última modificação em 14 de agosto de 2026