Nastavení tajných proměnných
Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019
Tajné proměnné jsou šifrované proměnné, které můžete použít v potrubích bez odhalení jejich hodnoty. Tajné proměnné se dají použít pro soukromé informace, jako jsou hesla, ID a další identifikační data, která byste nechtěli vystavit v kanálu. Tajné proměnné se šifrují v klidovém stavu pomocí 2048bitového klíče RSA a jsou k dispozici v agentovi pro úlohy a skripty, které se mají použít.
Doporučené způsoby nastavení tajných proměnných jsou v uživatelském rozhraní, ve skupině proměnných a ve skupině proměnných ze služby Azure Key Vault. Tajné proměnné můžete také nastavit ve skriptu pomocí příkazu protokolování, ale tato metoda se nedoporučuje, protože tyto proměnné mohou vidět všichni, kdo mají přístup k vašemu kanálu.
Tajné proměnné nastavené v uživatelském rozhraní nastavení pipeline jsou omezeny na pipeline, ve které jsou nastavené. Skupiny proměnných můžete použít ke sdílení tajných proměnných mezi kanály.
Skrytá proměnná v uživatelském rozhraní
Tajné proměnné můžete nastavit v editoru aplikačního toku při úpravách jednotlivých toků. Šifrujete a nastavíte tajný kód proměnné kanálu výběrem ikony zámku.
Proměnné tajných kódů nastavíte stejným způsobem pro YAML a Classic.
Pokud chcete nastavit tajné kódy ve webovém rozhraní, postupujte takto:
- Přejděte na stránku Kanály , vyberte příslušný kanál a pak vyberte Upravit.
- Vyhledejte proměnné pro tento kanál.
- Přidejte nebo aktualizujte proměnnou.
- Vyberte možnost Udržet tuto hodnotu v tajnosti, aby se proměnná ukládala šifrovaně.
- Uložte kanál.
Tajné proměnné se šifrují v klidovém stavu pomocí 2048bitového klíče RSA. Tajné kódy jsou k dispozici v agentu pro úlohy a skripty, které se mají použít. Dávejte pozor na to, kdo má přístup ke změně kanálu.
Důležité
Snažíme se maskovat tajné kódy, které se zobrazují ve výstupu Služby Azure Pipelines, ale přesto je potřeba provést preventivní opatření. Nikdy nevypisujte tajemství jako výstup. Některé operační systémy zaznamenávají argumenty příkazového řádku. Nikdy nepředávejte tajné kódy na příkazovém řádku. Místo toho navrhujeme, abyste své tajnosti namapovali na proměnné prostředí.
Nikdy nezamaskujeme podřetěžky tajných kódů. Pokud je například "abc123" nastaven jako tajný kód, "abc" není maskován z protokolů. Tím se vyhnete maskování tajných kódů na příliš podrobné úrovni, aby protokoly byly nečitelné. Z tohoto důvodu by tajné kódy neměly obsahovat strukturovaná data. Pokud je například "{ "foo": "bar" }" nastaven jako tajný kód, "bar" není maskován z protokolů.
Na rozdíl od normální proměnné nejsou automaticky dešifrovány do proměnných prostředí pro skripty. Musíte explicitně mapovat tajné proměnné.
Použití tajné proměnné v uživatelském rozhraní
Tajnou proměnnou musíte mapovat jako proměnné prostředí, abyste na ně odkazovali v potrubí YAML. V tomto příkladu jsou definovány dvě tajné proměnné v uživatelském rozhraní SecretOne
a SecretTwo
. Hodnota SecretOne
je foo
a hodnota SecretTwo
je bar
.
steps:
- powershell: |
Write-Host "My first secret variable is $env:FOO_ONE"
$env:FOO_ONE -eq "foo"
env:
FOO_ONE: $(SecretOne)
- bash: |
echo "My second secret variable: $FOO_TWO"
if [ "$FOO_TWO" = "bar" ]; then
echo "Strings are equal."
else
echo "Strings are not equal."
fi
env:
FOO_TWO: $(SecretTwo)
Výstupy kanálu:
My first secret variable is ***
True
My second secret variable: ***
Strings are equal.
Poznámka:
Azure Pipelines se snaží maskovat tajné kódy při generování dat do protokolů kanálu, takže můžete vidět další proměnné a data maskovaná ve výstupu a protokolech, které nejsou nastavené jako tajné kódy.
Podrobnější příklad najdete v tématu Definice proměnných.
Nastavení tajné proměnné ve skupině proměnných
Tajné kódy můžete přidat do skupiny proměnných nebo propojit tajné kódy z existující služby Azure Key Vault.
Vytvoření nových skupin proměnných
Vyberte Kanály>Knihovnu>+ skupinu proměnných.
Zadejte název a popis skupiny.
Volitelné: Přesuňte přepínač pro propojení tajných kódů ze služby Azure Key Vault jako proměnné. Další informace najdete v tématu Použití tajných kódů služby Azure Key Vault.
Zadejte název a hodnotu pro každou proměnnou, která se má zahrnout do skupiny, a zvolte + Přidat pro každou z nich.
Pokud chcete proměnnou zabezpečit, zvolte na konci řádku ikonu zámku.
Po dokončení přidávání proměnných vyberte Uložit.
Skupiny proměnných se řídí modelem zabezpečení knihovny.
Odkazování na tajné klíče ze služby Azure Key Vault
Můžete vytvořit skupiny proměnných a propojit je s existujícím trezorem klíčů Azure, což vám umožní přístup k tajným údajům uloženým v úložišti klíčů. Pouze tajné názvy se mapují do skupiny proměnných, nikoli tajné hodnoty. Kanál spustí propojení se skupinou proměnných a načte nejnovější hodnoty tajných kódů z trezoru. Další informace najdete v tématu Propojení skupiny proměnných s tajnými kódy ve službě Azure Key Vault.
Použití úlohy služby Azure Key Vault
Úlohu služby Azure Key Vault můžete použít k zahrnutí tajných údajů do potrubí. Tato úloha umožňuje kanálu připojit se ke službě Azure Key Vault a načíst tajné kódy, které se použijí jako proměnné kanálu.
V editoru kanálů vyberte Zobrazit asistenta a rozbalte panel asistenta.
Vyhledejte
vault
a vyberte úlohu služby Azure Key Vault.
V Azure DevOps Serveru 2019 a 2020 se v současné době nepodporuje možnost Zpřístupnit tajné kódy pro celou úlohu .
Další informace o úloze služby Azure Key Vault najdete v tématu Použití tajných kódů služby Azure Key Vault v Azure Pipelines.
Nastavení tajné proměnné ve skriptu pomocí příkazů protokolování
Pomocí příkazu protokolování můžete task.setvariable
nastavit proměnné ve skriptech PowerShellu a Bash. Tato metoda je nejméně bezpečný způsob práce s tajnými proměnnými, ale může být užitečný pro ladění. Doporučené způsoby nastavení tajných proměnných jsou v uživatelském rozhraní, ve skupině proměnných a ve skupině proměnných ze služby Azure Key Vault.
Pokud chcete nastavit proměnnou jako skript s protokolováním, musíte použít příznak issecret
.
Pokud issecret
je nastavena hodnota true, hodnota proměnné se uloží jako tajný kód a maskuje se z protokolů.
Poznámka:
Azure Pipelines se snaží maskovat tajemství při zaznamenávání dat do protokolů kanálu, takže můžete vidět další proměnné a data maskovaná ve výstupu a protokolech, které nejsou označeny jako tajemství.
Nastavte tajnou proměnnou mySecretVal
.
- bash: |
echo "##vso[task.setvariable variable=mySecretVal;issecret=true]secretvalue"
Získejte tajnou proměnnou mySecretVal
.
- bash: |
echo "##vso[task.setvariable variable=mySecretVal;issecret=true]secretvalue"
- bash: |
echo $(mySecretVal)
Výstup tajné proměnné v Bash.
Přečtěte si další informace o nastavení a používání proměnných ve skriptech.