Защита учетных данных для частного репозитория R в .Rprofile
В отличие от python pip, R, похоже, предоставляет учетные данные, настроенные для частных репозиториев R, определенных в .Rprofile
. Я полагаю, это связано с тем, что R обрабатывает строку как URL-адрес.
local({r <- getOption("repos")
r["Nexus"] <- "https://username:password@my-private-r-repo.com/repository/r-group"
options(repos=r)
})
Затем, когда я устанавливаю пакет:
> install.packages("shinydashboard")
trying URL 'https://username:password@my-private-r-repo.com/repository/r-group/bin/macosx/el-capitan/contrib/3.6/shinydashboard_0.7.1.tgz'
Content type 'application/x-tgz' length 326031 bytes (318 KB)
==================================================
downloaded 318 KB
The downloaded binary packages are in
/var/folders/7_/pt_pgg2j531f2jc_n5znht600000gn/T//RtmpZkpXkN/downloaded_packages
Есть ли в R параметры конфигурации для предотвращения раскрытия учетных данных?
1 ответ
Я решил эту (и другие проблемы) с помощью renv и заголовка авторизации .
помогает создавать виртуальные среды для проектов R, блокируя все пакеты (и их версии), используемые в проекте.
Вы можете прочитать о заголовках аутентификации здесь: Web API Authentication Basic vs Bearer
Вы можете заставить renv работать с частными репозиториями, добавив.Rprofile
файл в проект следующим образом:
source("renv/activate.R")
local({
project_repos <- c(
CRAN = "https://cloud.r-project.org",
PRIVATE_CRAN = "https://your-private-cran.io"
)
options(repos = project_repos)
options(
renv.download.headers = function(url) {
if (grepl(paste0("^", project_repos["PRIVATE_CRAN"]), url))
return(c(Authorization = paste0("Bearer ", Sys.getenv("AUTH_TOKEN"))))
})
Это будет автоматически добавлять заголовок авторизации каждый раз, когда вы получаете доступ к файлу из частной CRAN.
Если вы сделали все предварительные условия, установка пакета будет выглядеть так:
> renv::install("private_packge@2.7.2")
Retrieving 'https://your-private-cran.io/Cran-local/src/contrib/Archive/private_packge/2.7.2/private_packge_2.7.2.tar.gz' ...
OK [file is up to date]
Installing private_packge [2.7.2] ...
OK [built from source]
Moving private_packge [2.7.2] into the cache ...
OK [moved to cache in 1.3 milliseconds]
Предпосылки:
- Установите и настройте renvrenv для своего проекта.
- Ваш частный CRAN должен иметь возможность принимать заголовок авторизации.
- Маркер аутентификации хранится в переменной среды с именем .
- Обратите внимание, что я использую аутентификацию Bearer , это означает, что я получил выделенный токен из своего частного CRAN. Если вы хотите использовать , вам нужно использовать обычную аутентификацию и переменную среды с именем
AUTH_TOKEN
должна быть кодировка base64username:password
.