Computer >> 컴퓨터 >  >> 체계 >> Windows Server

PowerShell SecretManagement 모듈:자격 증명 및 비밀을 안전하게 관리

Microsoft는 최근 매우 유용한 SecretManagement를 출시했습니다. PowerShell 모듈. 이를 사용하여 PowerShell 스크립트에 저장된 암호(비밀)를 안전하게 저장하고 사용할 수 있습니다. 모듈은 SecretStore 금고의 두 가지 구성요소로 구성됩니다. (기본 비밀번호 저장소) 및 SecretManagement (다른 암호 볼트에 액세스하기 위한 엔진). 기본 제공 SecretStore 볼트와 타사 비밀 볼트(KeePass, LastPass, HashiCorp Vault, Azure Key Vault, Bitwarden, Windows Credential Manager 등)가 모두 지원됩니다. SecretManagement를 사용하여 모든 암호(자격 증명)를 비밀 금고에 저장하고 언제든지 검색할 수 있습니다. 라이센스 키, 액세스 키 및 기타 민감한 정보를 저장할 수도 있습니다(Hashtable , Byte , String , SecureString , 및 PSCredential 개체 유형이 지원됨).

이 기사에서는 PowerShell 스크립트에서 SecretManagement 모듈을 사용하여 자격 증명을 저장하고 검색하는 방법과 KeePass 통합의 예를 보여줍니다.

내용:

  • 비밀 관리 모듈 설치
  • PowerShell을 통해 비밀번호 저장소(SecretStore Vault) 만들기
  • 비밀 관리 모듈을 사용하여 저장된 자격 증명 관리
  • PowerShell 스크립트의 Secret Vault에 저장된 비밀번호 사용
  • PowerShell로 KeePass 암호 및 비밀 관리

비밀 관리 모듈 설치

SecretManagement 모듈에는 Windows PowerShell 버전 5.1 또는 PowerShell Core 6.x, 7.x가 필요합니다.

NuGet 패키지 관리자를 사용하여 SecretManagement를 설치하려면 아래 명령을 실행하세요.

Install-Module -Name Microsoft.PowerShell.SecretManagement

기본 SecretStore를 설치하려면 Microsoft에서 제공하는 볼트에서 다음 명령을 실행하십시오.

Install-Module -Name Microsoft.PowerShell.SecretStore

PowerShell SecretManagement 모듈:자격 증명 및 비밀을 안전하게 관리

모듈에서 사용 가능한 cmdlet 목록을 표시하려면 다음 명령을 사용하십시오.

Get-Command -Module Microsoft.PowerShell.SecretManagement
Get-Command -Module Microsoft.PowerShell.SecretStore

PowerShell SecretManagement 모듈:자격 증명 및 비밀을 안전하게 관리

PowerShell을 통해 비밀번호 저장소(SecretStore Vault) 만들기

먼저 로컬 비밀 금고를 만듭니다. 이름을 MyDomainPassdb로 지정하겠습니다. 그리고 그것을 기본 비밀번호 저장소로 만드십시오.

Register-SecretVault -Name MyDomainPassdb -ModuleName Microsoft.PowerShell.SecretStore -DefaultVault

PowerShell 스크립트 실행 정책 설정으로 인해 모듈이 실행되지 않는 경우 다음과 같이 현재 세션에 대한 설정을 변경할 수 있습니다.

Set-ExecutionPolicy -Scope Process Unrestricted

로컬 및 원격 비밀번호 보관소를 모두 만들고 사용할 수 있습니다.

아래 명령은 현재 사용자에 대해 등록된 암호 저장소 목록을 표시합니다.

Get-SecretVault

PowerShell SecretManagement 모듈:자격 증명 및 비밀을 안전하게 관리

SecretStore Vault에 액세스하기 위한 마스터 비밀번호 생성:

Get-SecretStoreConfiguration

SecretStore Vault 마스터 비밀번호를 잊어버린 경우 저장된 데이터에 액세스할 수 없습니다.

기본적으로 다음 설정은 암호 저장소에 액세스할 수 있는 사람과 방법을 결정합니다.

  • 범위CurrentUser (현재 사용자만 SecretStore에 액세스할 수 있음)
  • 인증Password (마스터 비밀번호를 사용하여 볼트에 액세스)
  • 비밀번호 제한 시간900 – 마스터 비밀번호를 다시 입력할 필요가 없는 세션 기간(초), 세션 길이를 연장할 수 있습니다. Set-SecretStoreConfiguration -PasswordTimeout 1200
  • 상호작용Prompt (변경 시 마스터 비밀번호 입력 여부)

PowerShell SecretManagement 모듈:자격 증명 및 비밀을 안전하게 관리

비밀 금고에 액세스하기 위한 마스터 암호 요청을 비활성화하려면(권장하지 않음) Authentication = None을 설정하십시오. :

Set-SecretStoreConfiguration -Authentication None

마스터 비밀번호를 변경하려면 Set-SecretStorePassword를 사용하세요. cmdlet.

Windows에서 로컬 암호 저장소는 사용자 프로필 폴더 %LOCALAPPDATA%\Microsoft\PowerShell\secretmanagement에 있습니다. .

PowerShell SecretManagement 모듈:자격 증명 및 비밀을 안전하게 관리

유감스럽게도 관리 서비스 계정(MSA/gMSA)에 대한 프로필이 생성되지 않았기 때문에 비밀 관리 모듈을 사용할 수 없습니다.

비밀 관리 모듈을 사용하여 저장된 자격 증명 관리

Set-Secret cmdlet은 SecureString 유형의 암호를 암호 볼트에 추가하는 데 사용됩니다. 볼트 이름 및 항목 이름 지정:

Set-Secret -Vault MyDomainPassdb -Name user1

스토어에 저장하고 싶은 비밀번호(비밀번호)를 입력하세요.

또는 다음과 같이 보호된 값(예:GitHub 키)을 저장할 수 있습니다.
Set-Secret -Vault MyDomainPassdb -Name MY_GITHUB_TOKEN -Secret 'GitHub_AUTH_API_Token'

PowerShell 명령 기록에 저장되기 때문에 PowerShell 콘솔에서 개인 정보를 일반 텍스트로 입력할 때 주의하십시오.

비밀 금고에 있는 항목 목록을 표시할 수 있습니다.

Get-SecretInfo

PowerShell SecretManagement 모듈:자격 증명 및 비밀을 안전하게 관리

PowerShell 7.x에서는 –AsPlainText를 사용하여 암호 저장소의 보호된 값을 일반 텍스트로 표시할 수 있습니다. 옵션(필요한 경우 PowerShell 버전 업데이트):

Get-Secret -Vault MyDomainPassdb -Name user1| ConvertFrom-SecureString –AsPlainText

대부분의 경우 Windows 네트워크에서 작업할 때만 암호를 저장하는 대신 사용자 이름과 암호를 모두 저장해야 합니다. 이 경우 자격 증명을 PSCredential로 저장합니다. 물체. 저장된 항목의 설명과 함께 메타데이터를 추가할 수도 있습니다.

Set-Secret -Vault MyDomainPassdb -Name adm_maxbak -Secret (Get-Credential) -Metadata @{description = "AD enterprise admin woshub.com"}

Get-Credential 창에 계정 이름을 입력하지 않으려면 다음과 같이 지정할 수 있습니다.

Set-Secret -Vault MyDomainPassdb -name adm_maxbak -Secret (get-credential woshub\adm_maxbak)

저장된 비밀번호 목록과 설명을 표시하는 방법은 다음과 같습니다.

Get-SecretInfo | Ft Name, Metadata

PowerShell SecretManagement 모듈:자격 증명 및 비밀을 안전하게 관리

PowerShell 스크립트의 Secret Vault에 저장된 비밀번호 사용

이제 PowerShell 스크립트 및 명령에 저장된 암호를 사용할 수 있습니다. 예를 들어 내 고객 중 한 명이 보안 및 관리 계정 보호를 위해 각 관리자와 다른 서비스/작업에 대해 12개의 계정을 사용하고 있습니다. 동일한 암호를 사용하는 것은 금지되며 암호는 정기적으로 감사됩니다. 관리자는 계속해서 다른 비밀번호를 입력하는 것이 지루하다고 생각합니다.

SecretManagement 모듈을 사용하면 암호를 로컬 볼트에 안전하게 저장하고 필요한 경우 얻을 수 있습니다.

예를 들어 원격 컴퓨터에 연결하고 PowerShell Remoting을 통해 명령을 실행하려면 다음 코드를 사용할 수 있습니다.

Enter-PSSession -ComputerName mun-dc01 -Credential (Get-Secret -Vault MyDomainPassdb -Name adm_maxbak)

같은 방식으로 Exchange 또는 Microsoft 365(ex-Office 365)를 더 쉽게 연결할 수 있습니다.

$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://mun-exch1.woshub.com/PowerShell/ -Authentication Kerberos -Credential (Get-Secret -Vault MyDomainPassdb -Name adm_ex_maxbak)

또는 Azure AD 테넌트를 연결합니다.

Connect-AzureAD -Credential (Get-Secret -Vault MyDomainPassdb -Name azadm_ maxbak)

또는 자격 증명을 가져와 PowerShell 변수에 저장합니다.

$Cred = Get-Secret -Vault MyDomainPassdb user1

PowerShell로 KeePass 비밀번호 및 비밀 관리

SecretManagement 모듈을 사용하여 널리 사용되는 다른 암호 볼트에 액세스할 수 있습니다. KeePass에 저장된 비밀번호에 액세스하는 방법을 알아보겠습니다. 파일(*.kdbx).

먼저 SecretManagement 모듈을 설치하여 KeePass와 상호 작용합니다.

Install-Module -Name SecretManagement.KeePass

PowerShell SecretManagement 모듈:자격 증명 및 비밀을 안전하게 관리

그런 다음 사용자 프로필에 있는 KeePass 볼트 파일을 등록합니다.

Register-SecretVault -Name "KeePassDB" -ModuleName "SecretManagement.Keepass" -VaultParameters @{
Path = "C:\Users\maxbak\Documents\personal_creds.kdbx"
UseMasterPassword = $true
}

KeePass 파일에 대한 액세스를 확인하려면 다음 명령을 실행하십시오.

Test-SecretVault -Name KeePassDB

PowerShell SecretManagement 모듈:자격 증명 및 비밀을 안전하게 관리

KeePass 볼트에 액세스하려면 마스터 비밀번호를 입력하십시오. 암호를 올바르게 입력한 경우 명령이 True를 반환합니다. .

그런 다음 KeePass 데이터베이스에 저장된 비밀번호 목록을 표시합니다.

Get-SecretInfo -Vault KeePassDB

PowerShell SecretManagement 모듈:자격 증명 및 비밀을 안전하게 관리

KeePass에 새 비밀을 저장하려면:

Set-Secret -Vault KeePassDB -Name "ILO_adm" -Secret (Get-Credential woshub\ILO_adm)

같은 방법으로 다른 인기 있는 암호 저장소 솔루션을 연결하여 PowerShell에서 사용할 수 있습니다.