[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-ci-cd-kak-upravlyat-credentials-v-jenkins":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":21,"progress":22,"seo":23},201,"kak-upravlyat-credentials-v-jenkins",6,"ci-cd","CI\u002FCD","🔄","Как управлять Credentials в Jenkins","**Credentials (учетные данные)** — это механизм безопасного хранения секретов в Jenkins (пароли, SSH-ключи, токены, сертификаты). Секреты хранятся в зашифрованном виде на диске master-сервера и никогда не выводятся в логах сборок (маскируются как `****`).\n\n### Типы Credentials\n\n| Тип | Описание | Пример использования |\n|---|---|---|\n| **Username with password** | Логин и пароль | Nexus, база данных, Git |\n| **Secret text** | Одиночный секретный текст | API-токен, ключ SonarQube |\n| **Secret file** | Секретный файл | Сертификат, `settings.xml`, kubeconfig |\n| **SSH Username with private key** | SSH-ключ | Подключение к серверам, Git по SSH |\n| **Certificate** | PKCS#12 сертификат | TLS-сертификаты |\n\n### Области видимости (Scope)\n\n- **Global** — доступен во всех проектах Jenkins.\n- **System** — доступен только на уровне системы Jenkins (для подключения агентов и т.д.), недоступен в пайплайнах.\n- **Folder** — доступен внутри определенной папки проектов (изоляция по командам).\n\n### Использование через environment\n\nПри использовании `credentials()` в блоке `environment` Jenkins автоматически создает переменные:\n\n```groovy\npipeline {\n    agent any\n    environment {\n        \u002F\u002F Username with password — создает ТРИ переменные:\n        \u002F\u002F NEXUS_CREDS (в формате user:pass), NEXUS_CREDS_USR и NEXUS_CREDS_PSW\n        NEXUS_CREDS = credentials('nexus-credentials')\n        \u002F\u002F Secret text — одна переменная\n        SONAR_TOKEN = credentials('sonarqube-token')\n    }\n    stages {\n        stage('Deploy to Nexus') {\n            steps {\n                sh \"\"\"\n                    mvn deploy \\\n                        -DaltDeploymentRepository=nexus::default::https:\u002F\u002Fnexus.company.com\u002Frepository\u002Fmaven-releases \\\n                        -Dusername=\\${NEXUS_CREDS_USR} \\\n                        -Dpassword=\\${NEXUS_CREDS_PSW}\n                \"\"\"\n            }\n        }\n    }\n}\n```\n\n### Использование через withCredentials\n\nБлок `withCredentials` предоставляет секреты только внутри своей области видимости:\n\n\u003Cdetails>\n\u003Csummary>Пример withCredentials\u003C\u002Fsummary>\n\n```groovy\nstage('Deploy') {\n    steps {\n        withCredentials([\n            usernamePassword(credentialsId: 'nexus-credentials',\n                           usernameVariable: 'NEXUS_USER',\n                           passwordVariable: 'NEXUS_PASS'),\n            sshUserPrivateKey(credentialsId: 'deploy-ssh-key',\n                            keyFileVariable: 'SSH_KEY')\n        ]) {\n            sh 'curl -u ${NEXUS_USER}:${NEXUS_PASS} --upload-file app.jar ${NEXUS_URL}'\n            sh 'ssh -i ${SSH_KEY} user@server \"systemctl restart app\"'\n        }\n    }\n}\n```\n\n\u003C\u002Fdetails>\n\n### Использование configFileProvider для settings.xml\n\nПлагин Config File Provider хранит конфигурационные файлы (например, `settings.xml` с учетными данными Nexus) и предоставляет их во время сборки:\n\n```groovy\nstage('Build') {\n    steps {\n        configFileProvider([configFile(fileId: 'maven-settings', variable: 'MAVEN_SETTINGS')]) {\n            sh 'mvn -s $MAVEN_SETTINGS clean deploy'\n        }\n    }\n}\n```\n\n### Лучшие практики работы с Credentials\n\n1. **Минимальные привилегии** — создавайте отдельные credentials для каждого назначения (не один суперпользователь на всё).\n2. **Folder scope** — изолируйте credentials по командам\u002Fпроектам через папки Jenkins.\n3. **Ротация** — периодически меняйте пароли и токены.\n4. **Аудит** — отслеживайте, кто и когда использует credentials (Audit Trail Plugin).\n5. **Внешние хранилища** — для enterprise-среды интегрируйте Jenkins с HashiCorp Vault или CyberArk.\n\n### Вывод\n\nCredentials — это фундамент безопасности CI\u002FCD пайплайна. Правильное управление секретами предотвращает утечки данных и обеспечивает соответствие требованиям безопасности. Никогда не храните секреты в коде, Jenkinsfile или переменных окружения операционной системы.\n\n> **На собеседовании:** часто просят объяснить разницу между `credentials()` в environment и `withCredentials`, а также описать типы credentials. Ключевой момент — знать, что Jenkins маскирует секреты в логах, но это не абсолютная защита (например, `base64` секрета не будет замаскирован).","","middle",[15,16,17,18,19,20],"credentials","withCredentials","секреты","jenkins","cicd","безопасность",[],null,{"title":24,"description":25,"ogTitle":26,"ogDescription":27,"keywords":28,"schemaAnswer":34,"featuredSnippetReady":35},"Credentials в Jenkins — безопасное хранение секретов — Gymterview","Jenkins Credentials хранит пароли, SSH-ключи, токены в зашифрованном виде. Типы: username\u002Fpassword, secret text, SSH key. Использование через withCredentials.","Credentials в Jenkins — типы, scope и использование в Pipeline","Типы: username\u002Fpassword, secret text, secret file, SSH key, certificate. Scope: Global, System, Folder. Использование: environment credentials() и withCredentials.",[29,30,31,32,33],"Jenkins Credentials","Jenkins секреты","withCredentials Jenkins","Jenkins credentials binding","управление секретами Jenkins","Credentials — механизм безопасного хранения секретов в Jenkins. Типы: Username with password, Secret text, Secret file, SSH key, Certificate. Области видимости: Global, System, Folder. Используются через environment { VAR = credentials('id') } или withCredentials([...]). Секреты маскируются в логах как ****.",true]