Oracle
 sql >> база данни >  >> RDS >> Oracle

Шифроване на парола в R - за свързване към Oracle DB с помощта на RODBC

РЕДАКТИРАНЕ:Функционалността по-долу вече е налична в моя R пакет keyringr. Пакетът keyringr също има подобни функции за достъп до ключодържателя на Gnome и ключодържателя на macOS.

---

Ако използвате Windows, можете да използвате PowerShell, за да направите това. Вижте моя публикация в блога по-долу.

http://www.gilfillan.space/2016/04/21/Using-PowerShell-and-DPAPI-to-securely-mask-passwords-in-R-scripts/

По същество...

  1. Уверете се, че сте активирали изпълнението на PowerShell.

  2. Запазете следния текст във файл, наречен EncryptPassword.ps1:

    # Create directory user profile if it doesn't already exist.
    $passwordDir = "$($env:USERPROFILE)\DPAPI\passwords\$($env:computername)"
    New-Item -ItemType Directory -Force -Path $passwordDir
    
    # Prompt for password to encrypt
    $account = Read-Host "Please enter a label for the text to encrypt.  This will be how you refer to the password in R.  eg. MYDB_MYUSER
    $SecurePassword = Read-Host -AsSecureString  "Enter password" | convertfrom-securestring | out-file "$($passwordDir)\$($account).txt"
    
    # Check output and press any key to exit
    Write-Host "Press any key to continue..."
    $x = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
    
  3. Изпълнете скрипта по-горе (щракнете с десния бутон> Изпълни с PowerShell), дайте смислено име за паролата и въведете паролата. Вече можете да проверите дали паролата е криптирана, като проверите файла в %USERPROFILE%/DPAPI/passwords/[ИМЕ НА ПК]/[PASSWORD IDENTIFIER.txt]

  4. Сега стартирайте следния код от R (имам тази функция, запазена в R скрипт, който извеждам в началото на всеки скрипт.

    getEncryptedPassword <- function(credential_label, credential_path) {
      # if path not supplied, use %USER_PROFILE%\DPAPI\passwords\computername\credential_label.txt as default
      if (missing(credential_path)) {
        credential_path <- paste(Sys.getenv("USERPROFILE"), '\\DPAPI\\passwords\\', Sys.info()["nodename"], '\\', credential_label, '.txt', sep="")
      }
      # construct command
      command <- paste('powershell -command "$PlainPassword = Get-Content ', credential_path, '; $SecurePassword = ConvertTo-SecureString $PlainPassword; $BSTR = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($SecurePassword); $UnsecurePassword = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR); echo $UnsecurePassword"', sep='')
      # execute powershell and return command
      return(system(command, intern=TRUE))
    }
    
  5. Сега, когато трябва да предоставите парола в R, можете да изпълните следната команда вместо твърдо кодиране / подкана за парола:

    getEncryptedPassword("[PASSWORD IDENTIFIER]")
    

    Например, вместо да изпълнявате командата ROracle:

    dbConnect(driver, "MYUSER", "MY PASSWORD", dbname="MYDB")
    

    Можете да стартирате това вместо това (идентификаторът, който предоставих в стъпка 3, е „MYUSER_MYDB“:

    dbConnect(driver, "MYUSER", getEncryptedPassword("MYUSER_MYDB"), dbname="MYDB")
    
  6. Можете да повторите стъпка 3 за толкова пароли, колкото са необходими, и просто да ги извикате с правилния идентификатор в стъпка 5.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Шифроване на парола в R - за свързване към Oracle DB с помощта на RODBC

  2. Oracle PL/SQL колекции – Добавяне на елементи към съществуваща таблица

  3. Как най-добре да разделите csv низове в oracle 9i

  4. HEXTORAW() Функция в Oracle

  5. Функция TRIM() в Oracle