php vault
v1.0.7
유연한 PHP 기반 금고로 비밀을 동적으로 제공합니다
이 프로젝트는 GNU LGPL 3.0에 따라 라이센스가 부여됩니다.
composer install technicalguru/vaultGithub 릴리스 페이지에서 소스 코드 패키지를 다운로드 할 수 있습니다.
이 절차는 Hashicorp 블로그에서 가장 잘 설명되어 있습니다. approle 만드는 방법을 설명합니다. 여기에 본질이 있습니다.
# Enable the auth method for approle
vault auth enable approle
# Create a renewal policy
echo ' path "auth/token/*" { capabilities = [ "create", "read", "update", "delete", "list", "sudo" ] } ' > renewal-policy.hcl
vault policy write renewal-policy renewal-policy.hcl
# Create a file with your policy on the respective secret path:
cat ' path "secret/my-secret" { capabilities = ["read", "list"] } ' > app-policy.hcl
# Create the policy
vault policy write my-app-policy app-policy.hcl
# Create the approle with renewal-policy and your application policy
vault write auth/approle/role/my-approle token_policies=renewal-policy,my-app-policy token_period=30m token_ttl=30m token_max_ttl=1h token_explicit_max_ttl=2h
# Get the role ID printed
vault read auth/approle/role/my-approle/role-id
# Create the secret ID and print it
vault write -f auth/approle/role/my-approle/secret-id응용 프로그램 역할이나 정책을 변경할 때마다 비밀 ID를 재현해야합니다.
이 금고는 실제로 기존 해시 코프 금고의 클라이언트입니다.
// Create configuration
$ config = array (
' type ' => ' hashicorp ' ,
' config ' => array (
' uri ' => ' https://127.0.0.1:8200/v1 ' ,
' roleId ' => ' 123456-12345-12345-123456 ' ,
' secretId ' => ' abcdef-abcde-abcde-abcdef '
)
);
// Create the vault instance
try {
$ vault = TgVault VaultFactory:: create ( $ config );
} catch ( TgVault VaultException $ e ) {
// Vault could not be created
} // Create configuration
$ config = array (
' type ' => ' memory ' ,
' config ' => array (
' secrets ' => array (
' my/secret/number/1 ' => array (
' username ' => ' my-username1 ' ,
' password ' => ' my-password1 ' ,
),
' my/secret/number/2 ' => array (
' username ' => ' my-username2 ' ,
' password ' => ' my-password2 ' ,
),
)
)
);
// Create the vault instance
try {
$ vault = TgVault VaultFactory:: create ( $ config );
} catch ( TgVault VaultException $ e ) {
// Vault could not be created
} // Create configuration
$ config = array (
' type ' => ' file ' ,
' config ' => array (
' filename ' => ' path-to-json-secret-file '
)
);
// Create the vault instance
try {
$ vault = TgVault VaultFactory:: create ( $ config );
} catch ( TgVault VaultException $ e ) {
// Vault could not be created
}비밀 파일 (JSON)은 다음과 같습니다.
{
"secrets" : {
"my/secret/number/1" : {
"username" : " my-username1 " ,
"password" : " my-password1 "
},
"my/secret/number/2" : {
"username" : " my-username2 " ,
"password" : " my-password2 "
}
}
} try {
$ mySecret1 = $ vault -> getSecret ( ' my/secret/number/1 ' );
$ mySecret2 = $ vault -> getSecret ( ' my/secret/number/2 ' );
} catch ( TgVault VaultException $ e ) {
// secret was not found
}
$ username1 = $ mySecret1 -> get ( ' username ' );
$ password1 = $ mySecret1 -> get ( ' password ' );
$ username2 = $ mySecret2 -> get ( ' username ' );
$ password2 = $ mySecret2 -> get ( ' password ' ); 키가 존재하지 않으면 비밀의 값은 NULL 비밀 자체를 찾을 수 없거나 검색하는 동안 오류가 발생할 때 예외가 발생됩니다.
SecretProvider 또는 CredentialsProvider Helper 클래스를 사용하여 자격 증명이 어디에서 왔는지 또는 금고를 사용하는 방법을 알지 못하고 자격 증명을 전달할 수 있습니다.
$ callback1 = new TgVault SecretProvider ( $ vault , ' my/secret/number/1 ' );
$ callback2 = new TgVault CredentialsProvider ( $ vault , ' my/secret/number/2 ' );
try {
$ username1 = $ callback1 -> get ( ' username ' );
$ password1 = $ callback1 -> get ( ' password ' );
$ username2 = $ callback2 -> getUsername ();
$ password2 = $ callback2 -> getPassword ();
} catch ( TgVault VaultException $ e ) {
// Secret cannot be retrieved or does not exist
} CredentialsProvider 정의하는 추가 생성자 인수를 가져옵니다. 비밀의 키는 사용자 이름과 비밀번호를 제공합니다. 기본값은 SecretProvider 의 경우 위에 제공됩니다.
버그를보고, GitHub 문제 추적기에서 향상 또는 풀 요청을 요청하십시오.