Security Scenarios

Apresentamos a seguir as três configurações mais utilizadas.

Configuração 1:Apenas o ramo principal tem um código de acesso de leitura-escrita

  • Um token de acesso somente leitura é especificado em nx.json .
  • Um token de acesso de leitura/gravação é definido usando a variável env NX_CLOUD_ACCESS_TOKEN no CI somente para CI executado na ramificação principal/mestre/de desenvolvimento.
  • O valor de encryptionKey é definido em nx.json .

Nesta configuração,apenas as construções executadas contra o ramo principal no CI podem carregar artefactos para a cache partilhada que serão utilizados por pedidos de extracção e comandos locais.Ninguém pode afectar o resultado da execução de um comando num pedido de puxar ou na máquina de outra pessoa,a menos que conheça a ficha de leitura-escrita definida no CI.Isto pressupõe que eles têm o acesso do administrador/proprietário à organização no CI.Portanto,não há forma de substituir qualquer artefacto sem conhecer a ficha.

A execução de tarefas distribuídas (DTE)permitida por Nx Cloud funciona com fichas só de leitura (por isso funciona também para pedidos de puxar),mas os artefactos são escopados para essa execução.Por outras palavras,os artefactos criados por uma execução de DTE só de leitura não podem ser acedidos por outras execuções ou através da cache distribuída do Nx Cloud.

O lado negativo desta abordagem é que os pedidos de puxar e os comandos locais beneficiam da execução do cálculo no ramo principal,mas o ramo principal não beneficia do cálculo efectuado,por exemplo,num pedido de puxar.

Configuração 2:A CI tem um código de acesso de leitura-escrita

  • Um token somente leitura é especificado em nx.json .
  • Um token de acesso de leitura/gravação é definido usando a variável env NX_CLOUD_ACCESS_TOKEN no CI e é usado para solicitações pull e a ramificação principal.
  • O valor de encryptionKey é definido em nx.json .

Isto pode acelerar drasticamente a corrida da IC contra o ramo principal.A desvantagem é que é possível que um RP carregue um artefacto partido que será puxado pelo ramo principal e depois implantado.Para garantir que isto não aconteça,a conduta de IC pode reconstruir o artefacto,saltando a cache antes de qualquer implantação.Com isto,um artefacto partido não pode afectar a instalação,mas pode afectar temporariamente o que é descarregado no ramo principal.

Configuração 3: um token de acesso de leitura e gravação é armazenado em nx.json

  • Um token de leitura/gravação é especificado em nx.json .

Isto pode acelerar a IC e o desenvolvimento local.O cálculo efectuado localmente pode ser partilhado entre promotores e agentes de IC.

Decidir sobre uma Instalação

Em pequenos projetos de código fechado em que os desenvolvedores têm configurações semelhantes, é comum ter um token de leitura e gravação compartilhado por todos os desenvolvedores. O token é armazenado em nx.json . Cada desenvolvedor pode gravar artefatos no cache. Outros desenvolvedores e agentes de CI podem ler esses valores. Isso pressupõe um alto grau de confiança. Assim como na Configuração 2, você ainda pode reconstruir o artefato do zero antes de qualquer implantação.

Em grandes organizações, é comum ter um token de leitura definido em nx.json e um token de leitura/gravação definido como uma variável env NX_CLOUD_ACCESS_TOKEN no CI. Os desenvolvedores podem se beneficiar da computação realizada no CI, mas não podem afetar a execução do CI. Dependendo de quanto você deseja isolar a ramificação principal e o que você faz com os artefatos armazenados em cache, você pode selecionar entre Configuração 1 ou Configuração 2.

Revogar os Tokens de Acesso

Geralmente,não há necessidade de revogar as fichas de acesso.Para afectar a execução do cálculo contra,digamos,o ramo principal,é necessário conhecer o hash de cálculo do comando que se está a tentar afectar.Só se pode saber o hash executando o comando,pelo que é necessário ter acesso ao último HEAD do ramo principal.

É por isso que quando um programador perde o acesso ao código fonte,perde a capacidade de conhecer o hash de cálculo.Não podem afectar qualquer cálculo,mesmo que conheçam um código de acesso de leitura-escrita.