Secrets – Como configurar? E para que serve?

24572304331104917

Você já deve ter visto em arquivos de configuração do home assistant de outras pessoas algo como !secret senha_email , ou !secret token_google , ou algo semelhante. Então, é isso que vamos explicar nesse artigo, vamos mostrar para que serve e como configurar o Secrets .

Para que serve?

O arquivo configuration.yaml é um arquivo de texto simples, portanto, é legível por qualquer pessoa que tenha acesso ao arquivo. Muitas vezes esse arquivo contém senhas e tokens de API que precisam ser inserido para poder funcionar algum componente. Se você quiser compartilhar sua configuração, tirar algum print, você sempre precisará esconder a parte onde contém senha ou tokens. Ao usar a tag !secret você pode remover qualquer informação privada de seus arquivos de configuração. Essa separação também pode ajudar você a manter um controle mais fácil de suas senhas e chaves de API tudo num só lugar, já que elas são armazenadas em um único local e não ficam espalhadas pelo arquivo configuration.yaml ou até mesmo em outros arquivos yaml dependendo da sua configuração.

Então é para isso que serve, para organizar suas senhas, keys, tokens em um só lugar, e por questão de segurança. Muitas vezes você acaba compartilhando parte do seu código com alguém e manda sem querer a parte onde contém a senha. Com essa configuração você não irá mais correr esse risco.

Como configurar?

Para você unificar as informações particulares (senhas, keys) em um único lugar, você irá utilizar o arquivo secrets.yaml . Esse arquivo deve ficar dentro da pasta config, se não existir esse arquivo, crie um arquivo secrets.yaml no diretório de configuração do Home Assistant.

Como falamos no início desse arquivo, as configurações de senhas e keys no arquivo configuration.yaml geralmente se parecem com o exemplo abaixo.

http:
  api_password: AQUI_VAI_A_SENHA

Essas “entradas” de senhas, precisam ser substituídas por um um identificador (variável) !secret como no exemplo a seguir, então ao invés de ficar como o exemplo acima, deve ficar como o exemplo abaixo:

arquivo: configuration.yaml

http:
  api_password: !secret http_password

O arquivo secrets.yaml deve conter a senha correspondente atribuída ao identificador (variável). Então dentro do arquivo secrets.yaml você adiciona todas as suas senhas, API configuradas por um identificador (variável) para cada senha.
Exemplo:

arquivo: secrets.yaml

# configuração de variáveis da API http
http_password: aquivo_coloco_a_senha

# configuração de variáveis do google assistant
google_assistant_project_id: nome-doprojeto1234
google_assistant_api_key: XXXXYYYYUYWIUQW(*@U(JSAIJWALKJLKSA

# configuração de variáveis do gmail
gmail_user: meu-email@home-assistant.wiki.br
gmail_senha: MinhaSenha

# configuração de variáveis do telegram
tg_api_key: XUKAUHSJW984905
tg_chat_id_meunome: 0000000000
tg_chat_id_outronome: 0000000000

O nome que você define para cada variável é de sua escolha. Normalmente são nome objetivos que você consegue facilmente identificar do que se trata, mas não existe uma regra para definir.

Dessa forma você precisa sempre tomar cuidado para não compartilhar seu arquivo secrets.yaml . Além disso se você alterar o arquivo configuration.yaml e não atualizar o arquivo secrets.yaml , ao subir o Home Assistant você pode ter problemas caso o identificador (variável) não estar definido no arquivo secrets.yaml . E para corrigir você precisará atualizar o arquivo secrets.yaml e reiniciar novamente seu HA.

Exemplo de como configurar uma variável “!secret” e aplicar no arquivo de configuração

Para saber mais detalhes sobre as configurações você pode acessar página da documentação do secrets no Home Assistant

Video:

Sabia que pode usar o Secrets com o ESPHome? Da uma lida aqui!

Quer usar o Secrets no Node-RED? Clique no link abaixo!

8 curtidas

Bom dia. Inicialmente quero parabenizar @douglas e comunidade.
Já aprendi muito nos tópicos.

Minha dúvida não exatamente sobre o !secret, mas sobre sua utilização na situação abaixo:

camera:
  - platform: ffmpeg
    name: Lateral
    input: rtsp://admin:senha@host:554/cam/realmonitor?channel=1&subtype=0

Gostaria de implementar substituindo usuario, senha e host, separadamente por varios !secret.
Atualmente substituo tudo, assim:

input: !secret camera_1

Seria algo como:

camera:
  - platform: ffmpeg
    name: Piscina
    input: rtsp://!secret cftv_username:!secret cftv_password@!secret cftv_ip:554/cam/realmonitor?channel=1&subtype=0

Abraços.

Seria mais facil você fazer de cada um:

Configuration.yaml

input: !secret camera_1
input: !secret camera_10

Secret.yaml

camera_1: rtsp://admin:senha@host:554/cam/realmonitor?channel=1&subtype=0
camera_10: input: rtsp://admin:senha@host:554/cam/realmonitor?channel=1&subtype=0

Parabéns amigo Douglas! Muito bom este post! Estava a procura!

ESPHome + Secrets

É possível usar o mesmo arquivo secrets.yaml do Home Assistant para variáveis do ESPHome, muito útil para nome e senha da rede wifi e senhas da API e do OTA dos dispositivos.

Para isso, basta acessar o dashboard do ESPHome e clicar no ícone image na lateral direita e depois em image.

image

Neste arquivo que irá abrir incluir o seguinte código:

!include ../secrets.yaml

image

Importante: O código de exemplo acima funciona apenas para os casos que o arquivo secrets.yaml esteja localizado em config/secrets.yaml. Caso você tenha alterado o local do arquivo deve ajustar o código acima para o caminho do arquivo.

Após incluir, basta salvar e as variáveis definidas no arquivo secrets.yaml principal estarão disponíveis no ESPHome. Para usar, basta utilizar como em no resto do Home Assistant.

Por exemplo para usar as informações de conexão à rede wifi:

wifi:
  ssid: !secret RedeWifi
  password: !secret SenhaWifi

Assim é possível concentrar todas as suas variáveis importantes em um único arquivo.

2 curtidas

Também é possível utilizar as informações do arquivo secrets.yaml no NodeRed, veja o post a seguir:

1 curtida