{"id":18955,"date":"2021-03-25T10:22:07","date_gmt":"2021-03-25T18:22:07","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/powershell\/?p=18955"},"modified":"2022-04-06T09:52:31","modified_gmt":"2022-04-06T17:52:31","slug":"secretmanagement-and-secretstore-are-generally-available","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/powershell\/secretmanagement-and-secretstore-are-generally-available\/","title":{"rendered":"SecretManagement and SecretStore are Generally Available"},"content":{"rendered":"<p>We are excited to announce two modules are now generally available on the PowerShell Gallery:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.powershellgallery.com\/packages\/Microsoft.PowerShell.SecretManagement\" rel=\"nofollow\">Microsoft.PowerShell.SecretManagement<\/a><\/li>\n<li><a href=\"https:\/\/www.powershellgallery.com\/packages\/Microsoft.PowerShell.SecretStore\" rel=\"nofollow\">Microsoft.PowerShell.SecretStore<\/a><\/li>\n<\/ul>\n<p>To install the modules, open any PowerShell console and run:<\/p>\n<div class=\"highlight highlight-source-powershell\">\n<pre><span class=\"pl-c1\">Install-Module<\/span> Microsoft.PowerShell.SecretManagement<span class=\"pl-k\">,<\/span> Microsoft.PowerShell.SecretStore<\/pre>\n<\/div>\n<h2><a id=\"user-content-introducing-secretmanagement\" class=\"anchor\" href=\"https:\/\/github.com\/PowerShell\/PowerShell-Blog\/blob\/92f75be454a211197ebd23d4aaae01834f0a7cfb\/Posts\/2021-03-23-SecretManagementGA.md#introducing-secretmanagement\" aria-hidden=\"true\"><\/a>Introducing SecretManagement<\/h2>\n<p>The SecretManagement module helps users manage secrets by providing a common set of cmdlets to interface with secrets across vaults. SecretManagement utilizes an extensible model where local and remote vaults can be registered and unregistered for use in accessing and retrieving secrets. The module provides the following cmdlets for accessing secrets and managing SecretVaults:<\/p>\n<div class=\"highlight highlight-source-powershell\">\n<pre><span class=\"pl-c1\">Get-Secret<\/span>\r\n<span class=\"pl-c1\">Get-SecretInfo<\/span>\r\n<span class=\"pl-c1\">Get-SecretVault<\/span>\r\n<span class=\"pl-c1\">Register-SecretVault<\/span>\r\n<span class=\"pl-c1\">Remove-Secret<\/span>\r\n<span class=\"pl-c1\">Set-Secret<\/span>\r\n<span class=\"pl-c1\">Set-SecretInfo<\/span>\r\n<span class=\"pl-c1\">Set-SecretVaultDefault<\/span>\r\n<span class=\"pl-c1\">Test-SecretVault<\/span>\r\n<span class=\"pl-c1\">Unregister-SecretVault\r\n\r\n<\/span><\/pre>\n<\/div>\n<p>Reference documentation for this module is available <a href=\"https:\/\/docs.microsoft.com\/en-us\/powershell\/module\/microsoft.powershell.secretmanagement\/?view=ps-modules\">on our Microsoft docs site<\/a>.<\/p>\n<h3><a id=\"user-content-secretmanagement-uses\" class=\"anchor\" href=\"https:\/\/github.com\/PowerShell\/PowerShell-Blog\/blob\/92f75be454a211197ebd23d4aaae01834f0a7cfb\/Posts\/2021-03-23-SecretManagementGA.md#secretmanagement-uses\" aria-hidden=\"true\"><\/a>SecretManagement Uses<\/h3>\n<p>SecretManagement is valuable in heterogeneous environments where you may want to separate the specifics of the vault from a common script which needs secrets. SecretManagement is also a convenience feature which allows users to simplify their interactions with various vaults by only needing to learn a single set of cmdlets.<\/p>\n<p>Since SecretManagement is a module abstraction layer in PowerShell, it becomes useful once extension vaults are registered (more on that below). There are trade-offs between security, usability, and specificity for any vault so it is up to the user to configure SecretManagement to integrate with the vaults that best match their requirements, as well as to assess the extent to which they trust any vault extensions not developed by Microsoft.<\/p>\n<p>SecretManagement does not impose a common authentication for extension vaults and allows each individual vault to provide its own mechanism. Some may require a password or token, while others may leverage current account credentials.<\/p>\n<p>Some key scenarios we have heard from PowerShell users are:<\/p>\n<ul>\n<li>Sharing a script across my org (or open source) without knowing the platform\/local vault of all the users<\/li>\n<li>Running my deployment script in local, test and production with the change of only a single parameter (<code>-Vault<\/code>)<\/li>\n<li>Changing the backend of the authentication method to meet specific security or organizational needs without needing to update all my scripts<\/li>\n<\/ul>\n<h2><a id=\"user-content-introducing-secretstore\" class=\"anchor\" href=\"https:\/\/github.com\/PowerShell\/PowerShell-Blog\/blob\/92f75be454a211197ebd23d4aaae01834f0a7cfb\/Posts\/2021-03-23-SecretManagementGA.md#introducing-secretstore\" aria-hidden=\"true\"><\/a>Introducing SecretStore<\/h2>\n<p><a href=\"https:\/\/www.powershellgallery.com\/packages\/Microsoft.PowerShell.SecretStore\" rel=\"nofollow\">SecretStore<\/a>\u00a0is a cross-platform, local, extension vault which is available on the PowerShell Gallery. This vault is designed to be supported in all the same environments as PowerShell 7, usable in popular PowerShell scenarios (like automation and remoting), and utilizes common security practices. This vault encrypts secrets on the file system, for remote options we recommend exploring alternative vaults (like Azure Key Vault).<\/p>\n<h3><a id=\"user-content-features-of-secretstore\" class=\"anchor\" href=\"https:\/\/github.com\/PowerShell\/PowerShell-Blog\/blob\/92f75be454a211197ebd23d4aaae01834f0a7cfb\/Posts\/2021-03-23-SecretManagementGA.md#features-of-secretstore\" aria-hidden=\"true\"><\/a>Features of SecretStore<\/h3>\n<p>The SecretStore vault stores secrets locally on file for the current user, and uses .NET Core cryptographic APIs to encrypt file contents. This extension vault is configurable and works over all supported PowerShell platforms on Windows, Linux, and macOS. The following cmdlets are provided to manage SecretStore:<\/p>\n<div class=\"highlight highlight-source-powershell\">\n<pre><span class=\"pl-k\">-<\/span> <span class=\"pl-c1\">Get-SecretStoreConfiguration<\/span>\r\n<span class=\"pl-k\">-<\/span> <span class=\"pl-c1\">Set-SecretStoreConfiguration<\/span>\r\n<span class=\"pl-k\">-<\/span> <span class=\"pl-c1\">Unlock-SecretStore<\/span>\r\n<span class=\"pl-k\">-<\/span> <span class=\"pl-c1\">Update-SecretStorePassword<\/span>\r\n<span class=\"pl-k\">-<\/span> <span class=\"pl-c1\">Reset-SecretStore\r\n\r\n<\/span><\/pre>\n<\/div>\n<p>Reference documentation for this module is available <a href=\"https:\/\/docs.microsoft.com\/en-us\/powershell\/module\/microsoft.powershell.secretstore\/?view=ps-modules\">on our Microsoft docs site<\/a>.<\/p>\n<h2><a id=\"user-content-getting-started-with-secretmanagement\" class=\"anchor\" href=\"https:\/\/github.com\/PowerShell\/PowerShell-Blog\/blob\/92f75be454a211197ebd23d4aaae01834f0a7cfb\/Posts\/2021-03-23-SecretManagementGA.md#getting-started-with-secretmanagement\" aria-hidden=\"true\"><\/a>Getting Started with SecretManagement<\/h2>\n<p>Once you have SecretManagement installed you can run\u00a0<code>Get-SecretVault<\/code>\u00a0to see what secret vaults you have registered. If this is your first time using the module this command will return nothing since nothing is registered, read on to learn how to discover, install, and register secret vaults. Once you have a vault registered you can utlize the SecretManagement cmdlets to view, get, set, and remove secrets.<\/p>\n<h2><a id=\"user-content-extension-vault-ecosystem\" class=\"anchor\" href=\"https:\/\/github.com\/PowerShell\/PowerShell-Blog\/blob\/92f75be454a211197ebd23d4aaae01834f0a7cfb\/Posts\/2021-03-23-SecretManagementGA.md#extension-vault-ecosystem\" aria-hidden=\"true\"><\/a>Extension Vault Ecosystem<\/h2>\n<p>SecretManagement becomes useful once you install and register extension vaults. Extension vaults, which are PowerShell modules with a particular structure, provide the connection between the SecretManagement module and any local or remote Secret Vault.<\/p>\n<h3><a id=\"user-content-discovering-and-installing-vault-extensions\" class=\"anchor\" href=\"https:\/\/github.com\/PowerShell\/PowerShell-Blog\/blob\/92f75be454a211197ebd23d4aaae01834f0a7cfb\/Posts\/2021-03-23-SecretManagementGA.md#discovering-and-installing-vault-extensions\" aria-hidden=\"true\"><\/a>Discovering and Installing Vault Extensions<\/h3>\n<p>To find SecretManagement extension vault modules, search the PowerShell Gallery for the \u201cSecretManagement\u201d tag. Some community vault extensions that are available:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.powershellgallery.com\/packages\/SecretManagement.KeePass\" rel=\"nofollow\">KeePass<\/a><\/li>\n<li><a href=\"https:\/\/www.powershellgallery.com\/packages\/SecretManagement.LastPass\" rel=\"nofollow\">LastPass<\/a><\/li>\n<li><a href=\"https:\/\/www.powershellgallery.com\/packages\/SecretManagement.Hashicorp.Vault.KV\" rel=\"nofollow\">Hashicorp Vault<\/a><\/li>\n<li><a href=\"https:\/\/www.powershellgallery.com\/packages\/SecretManagement.KeyChain\" rel=\"nofollow\">KeyChain<\/a><\/li>\n<li><a href=\"https:\/\/www.powershellgallery.com\/packages\/SecretManagement.JustinGrote.CredMan\" rel=\"nofollow\">CredMan<\/a><\/li>\n<li><a href=\"https:\/\/www.powershellgallery.com\/packages\/Az.KeyVault\" rel=\"nofollow\">Azure KeyVault<\/a>\u00a0(Microsoft Owned)<\/li>\n<\/ul>\n<p>Thank you to everyone who has created vaults thus far!<\/p>\n<h2><a id=\"user-content-getting-started-with-secretstore\" class=\"anchor\" href=\"https:\/\/github.com\/PowerShell\/PowerShell-Blog\/blob\/92f75be454a211197ebd23d4aaae01834f0a7cfb\/Posts\/2021-03-23-SecretManagementGA.md#getting-started-with-secretstore\" aria-hidden=\"true\"><\/a>Getting Started with SecretStore<\/h2>\n<p>While this example is being shown with SecretStore, the example can be followed with any number of extensions vaults.<\/p>\n<p>First Register the vault, the name parameter is a friendly name and can be anything you choose\u00a0<code>Register-SecretVault -Name SecretStore -ModuleName Microsoft.PowerShell.SecretStore -DefaultVault<\/code><\/p>\n<p>Now you can create a secret, you will also need to provide a password for the SecretStore vault\u00a0<code>Set-Secret -Name TestSecret -Secret \"TestSecret\"<\/code><\/p>\n<pre><code>Vault SecretStore requires a password.\r\nEnter password:\r\n*******\r\n<\/code><\/pre>\n<p>Run Get-Secret to retrieve the secret, using the\u00a0<code>-AsPlainText<\/code>\u00a0switch will return it as a readable string\u00a0<code>Get-Secret -Name TestSecret -AsPlainText<\/code>\u00a0<code>TestSecret<\/code>\u00a0To see the names all of your secrets you can run\u00a0<code>Get-SecretInfo<\/code><\/p>\n<p><code>Get-SecretInfo<\/code><\/p>\n<pre><code>Name                       Type VaultName\r\n----                       ---- ---------\r\nTestSecret               String SecretStore\r\n# To update your secret you can utilize the Set-Secret cmdlet\r\nPS C:\\&gt; Set-Secret -Name TestSecret -Secret \"TestSecretUpdate\"\r\n# To remove the secret you can utilize the Remove-Secret cmdlet\r\nPS C:\\&gt; Remove-Secret -Name TestSecret\r\n<\/code><\/pre>\n<h3><a id=\"user-content-using-metadata-with-the-secretstore\" class=\"anchor\" href=\"https:\/\/github.com\/PowerShell\/PowerShell-Blog\/blob\/92f75be454a211197ebd23d4aaae01834f0a7cfb\/Posts\/2021-03-23-SecretManagementGA.md#using-metadata-with-the-secretstore\" aria-hidden=\"true\"><\/a>Using Metadata with the SecretStore<\/h3>\n<p>Users can optionally provide non-sensitive metadata for their secrets. Secret metadata was a highly requested feature because as users store more secrets in SecretManagment, they may want to know what the secrets are intended for (for example, a particular subscription, or scenario). As users manage their secrets they may also want to add metadata around secret creation date, expiration time, or other information to manage the secret lifecycle. Metadata is optional for secret vaults to support so it may not be available for all vault extensions.<\/p>\n<p>To create a new secret with metadata you can run:<\/p>\n<p><code>Set-Secret -Name foo -Secret fooSecret -Metadata @{purpose = \"example\"}<\/code><\/p>\n<p>To view secret metadata you can then run the command:<\/p>\n<p><code>Get-SecretInfo | select name, metadata<\/code><\/p>\n<p>You can also set metadata for an existing secret using the\u00a0<code>Set-SecretInfo<\/code>\u00a0cmdlet:<\/p>\n<p><code>Set-SecretInfo bar -Metadata @{purpose = \"showing the new cmdlet\"}<\/code><\/p>\n<p>Since SecretMetadata is for non-sensitive data, if you need to store sensitive metadata you may want to consider storing it as a hashtable in the vault itself. For example, if I consider the username, or subscriptionID to be sensitive for particular secrets for resource1 and resource2, I may want to create a secret like:<\/p>\n<p><code>Set-Secret -name secretMetadata -Secret @{ resource1 = \"username1, subID1\"; resource2 = \"username, subID2\"}<\/code><\/p>\n<h3><a id=\"user-content-configuring-the-secretstore\" class=\"anchor\" href=\"https:\/\/github.com\/PowerShell\/PowerShell-Blog\/blob\/92f75be454a211197ebd23d4aaae01834f0a7cfb\/Posts\/2021-03-23-SecretManagementGA.md#configuring-the-secretstore\" aria-hidden=\"true\"><\/a>Configuring the SecretStore<\/h3>\n<p>Separate from its integration with the SecretManagement interface, the SecretStore module is highly configurable.<\/p>\n<p>It can be configured to require a password to unlock the store, or operate without a password. The no-password option still encrypts secrets on file and in memory. But the key for decryption is stored on file in the current user location, and is less secure.<\/p>\n<p>SecretStore can also be configured to prompt the user for the password if needed. When a password is provided, it applies only to the current PowerShell session and only for a limited time. The password timeout time is also configurable and set to 15 minutes by default. Password prompting is useful when SecretStore is used interactively. For automation scenarios, password prompting can be disabled and will instead return an error.<\/p>\n<p>If password prompting is disabled and a password is required to access secrets, a\u00a0<code>Microsoft.PowerShell.SecretStore.PasswordRequiredException<\/code>\u00a0will be thrown. In this case, the SecretStore can be unlocked using the\u00a0<code>Unlock-SecretStore<\/code>\u00a0cmdlet.<\/p>\n<p>There is also a SecretStore Scope setting, but it is currently set to CurrentUser and cannot be changed.<\/p>\n<p>The default configuration is set by default for best security and interactive use.<\/p>\n<div class=\"highlight highlight-source-powershell\">\n<pre><span class=\"pl-c1\">Get-SecretStoreConfiguration<\/span>\r\n\r\n      Scope Authentication PasswordTimeout Interaction\r\n      <span class=\"pl-k\">-----<\/span> <span class=\"pl-k\">--------------<\/span> <span class=\"pl-k\">---------------<\/span> <span class=\"pl-k\">-----------<\/span>\r\nCurrentUser       Password             <span class=\"pl-c1\">900<\/span>      Prompt<\/pre>\n<\/div>\n<h3><a id=\"user-content-using-the-secretstore-in-automation\" class=\"anchor\" href=\"https:\/\/github.com\/PowerShell\/PowerShell-Blog\/blob\/92f75be454a211197ebd23d4aaae01834f0a7cfb\/Posts\/2021-03-23-SecretManagementGA.md#using-the-secretstore-in-automation\" aria-hidden=\"true\"><\/a>Using the SecretStore in Automation<\/h3>\n<p>This is an example of automation script that installs and configures the Microsoft.PowerShell.SecretStore module without user prompting. The configuration requires a password and sets user interaction to\u00a0<code>None<\/code>, so that SecretStore will never prompt the user. The configuration also requires a password, and the password is passed in as a SecureString object. The\u00a0<code>-Confirm:false<\/code>\u00a0parameter is used so that PowerShell will not prompt for confirmation.<\/p>\n<p>The SecretStore password must be provided in a secure fashion. Here the password is being imported from an encrypted file using Windows Data Protection API, but this is a Windows only solution. Another option is to use a CI system mechanism such as secure variables.<\/p>\n<p>Next, the SecretManagement module is installed and the SecretStore module registered so that the SecretStore secrets can be managed.<\/p>\n<p>The\u00a0<code>Unlock-SecretStore<\/code>\u00a0cmdlet is used to unlock the SecretStore for this session. The password timeout was configured for 1 hour and SecretStore will remain unlocked in the session for that amount of time, after which it will need to be unlocked again before secrets can be accessed.<\/p>\n<div class=\"highlight highlight-source-powershell\">\n<pre><span class=\"pl-c1\">Install-Module<\/span> <span class=\"pl-k\">-<\/span>Name Microsoft.PowerShell.SecretStore <span class=\"pl-k\">-<\/span>Repository PSGallery <span class=\"pl-k\">-<\/span>Force\r\n<span class=\"pl-smi\">$password<\/span> <span class=\"pl-k\">=<\/span> <span class=\"pl-c1\">Import-CliXml<\/span> <span class=\"pl-k\">-<\/span>Path <span class=\"pl-smi\">$securePasswordPath<\/span>\r\n\r\n<span class=\"pl-c1\">Set-SecretStoreConfiguration<\/span> <span class=\"pl-k\">-<\/span>Scope CurrentUser <span class=\"pl-k\">-<\/span>Authentication Password <span class=\"pl-k\">-<\/span>PasswordTimeout <span class=\"pl-c1\">3600<\/span> <span class=\"pl-k\">-<\/span>Interaction None <span class=\"pl-k\">-<\/span>Password <span class=\"pl-smi\">$password<\/span> <span class=\"pl-k\">-<\/span>Confirm:<span class=\"pl-c1\">$false<\/span>\r\n\r\n<span class=\"pl-c1\">Install-Module<\/span> <span class=\"pl-k\">-<\/span>Name Microsoft.PowerShell.SecretManagement <span class=\"pl-k\">-<\/span>Repository PSGallery <span class=\"pl-k\">-<\/span>Force\r\n<span class=\"pl-c1\">Register-SecretVault<\/span> <span class=\"pl-k\">-<\/span>Name SecretStore <span class=\"pl-k\">-<\/span>ModuleName Microsoft.PowerShell.SecretStore <span class=\"pl-k\">-<\/span>DefaultVault\r\n\r\n<span class=\"pl-c1\">Unlock-SecretStore<\/span> <span class=\"pl-k\">-<\/span>Password <span class=\"pl-smi\">$password<\/span><\/pre>\n<\/div>\n<h2><a id=\"user-content-getting-started-with-azure-key-vault\" class=\"anchor\" href=\"https:\/\/github.com\/PowerShell\/PowerShell-Blog\/blob\/92f75be454a211197ebd23d4aaae01834f0a7cfb\/Posts\/2021-03-23-SecretManagementGA.md#getting-started-with-azure-key-vault\" aria-hidden=\"true\"><\/a>Getting Started with Azure Key Vault<\/h2>\n<p>The Azure Key Vault extension is available on the PowerShell Gallery beginning in\u00a0<a href=\"https:\/\/www.powershellgallery.com\/packages\/Az.KeyVault\/3.4.0\" rel=\"nofollow\">Az.KeyVault module<\/a>\u00a0v3.3.0. This vault extension utilizes a common authentication system with the rest of\u00a0<a href=\"https:\/\/github.com\/Azure\/azure-powershell#--microsoft-azure-powershell\">the Az PowerShell module<\/a>, and allows users to interact with an existing Azure Key Vault through the SecretManagement interface.<\/p>\n<p>To utilize Azure Key Vault with SecretManagement first ensure that you have\u00a0<a href=\"https:\/\/www.powershellgallery.com\/packages\/Az.KeyVault\/3.4.0\" rel=\"nofollow\">the Az.KeyVault module<\/a>\u00a0installed (<code>Install-Module Az.KeyVault<\/code>). You can then register the vault using your AZKVaultName and SubscriptionID:<\/p>\n<pre><code>Register-SecretVault\u00a0-Module\u00a0Az.KeyVault\u00a0-Name\u00a0AzKV\u00a0\r\n-VaultParameters\u00a0\u00a0\r\n@{\u00a0AZKVaultName\u00a0=\u00a0$vaultName;\u00a0SubscriptionId\u00a0=\u00a0$subID}\r\n<\/code><\/pre>\n<p>From there you can view the secrets you have (<code>Get-SecretInfo<\/code>), get secrets you may need (<code>Get-Secret<\/code>), create and update secrets (<code>Set-Secret<\/code>), and remove secrets (<code>Remove-Secret<\/code>).<\/p>\n<p>For any feature requests or support with the Azure Key Vault extension please refer to their\u00a0<a href=\"https:\/\/github.com\/Azure\/azure-powershell\">GitHub repository<\/a>.<\/p>\n<h2><a id=\"user-content-building-an-extension-vault\" class=\"anchor\" href=\"https:\/\/github.com\/PowerShell\/PowerShell-Blog\/blob\/92f75be454a211197ebd23d4aaae01834f0a7cfb\/Posts\/2021-03-23-SecretManagementGA.md#building-an-extension-vault\" aria-hidden=\"true\"><\/a>Building an Extension Vault<\/h2>\n<p>The value of the SecretManagement interface comes from the available underlying vault and becomes more useful with each community supported extension vault module. With this in mind, we took care to design the extension vault ecosystem in a way that would support vault developers. For more information on the design of SecretManagement, and how to build extension vaults please refer to\u00a0<a href=\"https:\/\/github.com\/PowerShell\/SecretManagement\/blob\/master\/Docs\/DesignDoc.md\">this design document<\/a>. We also hope\u00a0<a href=\"https:\/\/github.com\/PowerShell\/SecretStore\">SecretStore<\/a>\u00a0not only proves useful for SecretManagement users but also serves as an example for extension vault authors looking to build off of existing vaults.<\/p>\n<h2><a id=\"user-content-a-note-on-community-support\" class=\"anchor\" href=\"https:\/\/github.com\/PowerShell\/PowerShell-Blog\/blob\/92f75be454a211197ebd23d4aaae01834f0a7cfb\/Posts\/2021-03-23-SecretManagementGA.md#a-note-on-community-support\" aria-hidden=\"true\"><\/a>A Note on Community Support<\/h2>\n<p>Community feedback has been essential to the iterative development of these modules. We really appreciate everyone who took the time to try out our preview releases and participate in the design process of these modules.<\/p>\n<p>A huge thank you also to those community members who also took the time to build extension vaults and provided us with valuable feedback on the developer experience.<\/p>\n<h2><a id=\"user-content-whats-next\" class=\"anchor\" href=\"https:\/\/github.com\/PowerShell\/PowerShell-Blog\/blob\/92f75be454a211197ebd23d4aaae01834f0a7cfb\/Posts\/2021-03-23-SecretManagementGA.md#whats-next\" aria-hidden=\"true\"><\/a>What&#8217;s Next<\/h2>\n<p>We hope to continue to invest in the SecretManagement experience based on the feedback we recieve from this GA release. If you have feature requests or scenarios you would like the module to support in the future please let us know in our GitHub repositories for\u00a0<a href=\"https:\/\/github.com\/PowerShell\/SecretManagement\">SecretManagement<\/a>\u00a0and\u00a0<a href=\"https:\/\/github.com\/PowerShell\/SecretStore\">SecretStore repository<\/a>.<\/p>\n<h2><a id=\"user-content-feedback-and-support\" class=\"anchor\" href=\"https:\/\/github.com\/PowerShell\/PowerShell-Blog\/blob\/92f75be454a211197ebd23d4aaae01834f0a7cfb\/Posts\/2021-03-23-SecretManagementGA.md#feedback-and-support\" aria-hidden=\"true\"><\/a>Feedback and Support<\/h2>\n<p>To file issues or get support for the SecretManagement interface or vault development experience please use the\u00a0<a href=\"https:\/\/github.com\/PowerShell\/SecretManagement\">SecretManagement repository<\/a>. For issues which pertain specifically to the SecretStore and its cmdlet interface please use the\u00a0<a href=\"https:\/\/github.com\/PowerShell\/SecretStore\">SecretStore repository<\/a>.<\/p>\n<p>Sydney Smith<\/p>\n<p>PowerShell Team<\/p>\n","protected":false},"excerpt":{"rendered":"<p>We are excited to announce two modules are now generally available on the PowerShell Gallery: Microsoft.PowerShell.SecretManagement Microsoft.PowerShell.SecretStore To install the modules, open any PowerShell console and run: Install-Module Microsoft.PowerShell.SecretManagement, Microsoft.PowerShell.SecretStore Introducing SecretManagement The SecretManagement module helps users manage secrets by providing a common set of cmdlets to interface with secrets across vaults. SecretManagement utilizes an [&hellip;]<\/p>\n","protected":false},"author":2299,"featured_media":13641,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[3174,3181],"class_list":["post-18955","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-powershell","tag-secretmanagement","tag-secretstore"],"acf":[],"blog_post_summary":"<p>We are excited to announce two modules are now generally available on the PowerShell Gallery: Microsoft.PowerShell.SecretManagement Microsoft.PowerShell.SecretStore To install the modules, open any PowerShell console and run: Install-Module Microsoft.PowerShell.SecretManagement, Microsoft.PowerShell.SecretStore Introducing SecretManagement The SecretManagement module helps users manage secrets by providing a common set of cmdlets to interface with secrets across vaults. SecretManagement utilizes an [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/posts\/18955","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/users\/2299"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/comments?post=18955"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/posts\/18955\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/media\/13641"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/media?parent=18955"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/categories?post=18955"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/tags?post=18955"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}