DNS Framework: tenants cannot own DNS servers or vanity zones (no account/domainid on addDnsServer/createDnsZone)
Mantenedores costumam responder em até 1 dia
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 5/5
- Tempo estimado
- Mais de uma semana
- Facilidade para iniciantes
- 35/100
- Tipo de issue
- Funcionalidade
- Clareza
- Razoavelmente clara
- Status de atividade
- Ativa
- Stack de tecnologia
- java
- Domínio
- backend-api-design
Direção de pesquisa
Start by reading the DNS Framework API definitions and permission checks for addDnsServer and createDnsZone, then trace how DNS server and zone ownership and public suffixes are handled. The issue proposes several alternative changes, including tenant ownership, domain admin access, and suffix rules, so first agree on scope with maintainers. Done means tenants can manage delegated vanity zones under the agreed ownership and access rules without receiving the PowerDNS API key.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
ISSUE TYPE
- Improvement Request / Bug Report
COMPONENT NAME
DNS Framework (PowerDNS provider), API, UI
CLOUDSTACK VERSION
4.23.0.0
SUMMARY
The new DNS Framework works well for provider-owned zones, but in a multi-tenant
cloud there is no way for a tenant to manage a zone for a domain they own
(e.g. customer.com). Every tenant zone is forced under the public server's
suffix, and the admin cannot create a server entry or zone on a tenant's behalf.
OBSERVED BEHAVIOUR
addDnsServercalled by a non-root account fails with
"This API can only be called by root admin".
The documentation states that admins and domain admins can create public
DNS servers, so either the docs or the permission check is wrong.- Only one DNS server entry per account + URL is allowed
("This Account already has a DNS server integration for URL: ..."). addDnsServerandcreateDnsZonehave noaccount,domainidor
projectidparameters (verified withlist apis ... filter=params),
so root cannot create a server entry or zone owned by a tenant.- Zones created by root are owned by root and are not visible to tenants.
- Tenants creating zones on a public server are always restricted to the
singlepublicdomainsuffix.
Result: a tenant who owns customer.com and delegates it to our nameservers
cannot manage that zone through CloudStack. The only workarounds are manual
management by root, a separate DNS UI outside CloudStack, or CNAMEs from the
vanity zone into a suffixed tenant zone.
USE CASE
- Provider runs a PowerDNS cluster and wants to offer managed DNS to tenants.
- Default: tenants self-serve zones under
cloud.provider.example
(works today). - Some tenants own their own domains (
customer.com), delegate them to the
provider's nameservers, and need to manage records (A, MX, TXT, CNAME)
and VM auto-registration for them, without access to the PowerDNS API key.
PROPOSED IMPROVEMENTS
- Add
account+domainid(andprojectid) toaddDnsServerand
createDnsZone, consistent with other CloudStack resource APIs, so root
can provision a server entry or zone owned by a tenant. - Alternatively, an API to change zone ownership
(e.g.assignDnsZone/updateDnsZone account=... domainid=...). - Allow domain admins to call
addDnsServeras documented, or update the
docs if root-only is intended. - Allow multiple allowed suffixes per public server, or per-domain suffix
rules (e.g. domainROOT/CustomerAmay createcustomer.com). - Optional: an ownership verification step (TXT challenge) before a tenant
can create a zone outside the public suffix, to prevent zone squatting.
STEPS TO REPRODUCE
- As root admin, add a public PowerDNS server with
publicdomainsuffix=cloud.provider.example. - As a tenant user, try to create zone
customer.com-> forced under the suffix. - As a tenant user or domain admin, try
addDnsServer-> "can only be called by root admin". - As root, try
addDnsServeragain with the same URL -> "already has a DNS server integration for URL". - As root, create zone
customer.com-> owned by root, not visible to the tenant.
- Linguagem predominante
- Java
- Estrelas
- 3.1k
- Forks
- 1.4k
- Merge médio
- 7d 16h
- PRs com merge (30d)
- 15
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Tem um modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de apache/cloudstack
-
resizeVolume of a running system VM's volume is accepted but the VM never sees the new sizeTalvez já em andamento @bhouse-nexthop assumiu há 3 dias. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
apache/cloudstack#14645 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
VR reports a load balancer change as applied when haproxy.cfg cannot be replacedTalvez já em andamento @bhouse-nexthop assumiu há 4 dias. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
apache/cloudstack#14633 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
restartNetwork reports a ResourceUnavailableException as an unexpected error (530), unlike restartVPC (534)Talvez já em andamento @bhouse-nexthop assumiu há 4 dias. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
apache/cloudstack#14631 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
apache/cloudstack#14625 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
Remote access VPN users are disconnected on every LB, ACL, port forward or firewall change (xl2tpd restarted on every iptables pass)Talvez já em andamento @willbennett-devops assumiu há 12 dias. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
apache/cloudstack#14545 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
Todas as issues de apache/cloudstack
Issues semelhantes
-
[FEATURE] Expose external refresh, node-level translog and warmer statsTalvez já em andamento Um pull request vinculado a esta issue está aberto ou já foi mesclado. Abertauntriaged
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
opensearch-project/opensearch-prometheus-exporter#680 ·
Mantenedores costumam responder em até 2 dias
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 85/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 66/100
Mantenedores costumam responder em até 2 dias
-
bug
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 78/100
-
Good First Issue
Dificuldade 1/5 1-3 horas Facilidade para iniciantes 88/100
hiero-ledger/hiero-sdk-java#3059 ·
Mantenedores costumam responder em até 1 dia