From 905dba3d4e602f531cd63235c5adeaabfbd3e20c Mon Sep 17 00:00:00 2001 From: Michael Golowka <72365+pcman312@users.noreply.github.com> Date: Mon, 11 May 2020 17:02:58 -0600 Subject: [PATCH 1/8] Add docs for password policies --- website/data/api-navigation.js | 1 + website/data/docs-navigation.js | 1 + .../api-docs/system/policies-password.mdx | 141 +++++++++ .../pages/docs/concepts/password-policies.mdx | 278 ++++++++++++++++++ .../public/img/vault-password-policy-flow.svg | 1 + .../img/vault-password-policy-performance.png | Bin 0 -> 131598 bytes 6 files changed, 422 insertions(+) create mode 100644 website/pages/api-docs/system/policies-password.mdx create mode 100644 website/pages/docs/concepts/password-policies.mdx create mode 100644 website/public/img/vault-password-policy-flow.svg create mode 100644 website/public/img/vault-password-policy-performance.png diff --git a/website/data/api-navigation.js b/website/data/api-navigation.js index 9115fa4d969..bae5d479387 100644 --- a/website/data/api-navigation.js +++ b/website/data/api-navigation.js @@ -130,6 +130,7 @@ export default [ 'plugins-catalog', 'policy', 'policies', + 'policies-password', 'pprof', 'raw', 'rekey', diff --git a/website/data/docs-navigation.js b/website/data/docs-navigation.js index 74dc5e819bc..415480d83be 100644 --- a/website/data/docs-navigation.js +++ b/website/data/docs-navigation.js @@ -33,6 +33,7 @@ export default [ 'tokens', 'response-wrapping', 'policies', + 'password-policies', 'ha', 'integrated-storage', 'pgp-gpg-keybase', diff --git a/website/pages/api-docs/system/policies-password.mdx b/website/pages/api-docs/system/policies-password.mdx new file mode 100644 index 00000000000..090d39a2901 --- /dev/null +++ b/website/pages/api-docs/system/policies-password.mdx @@ -0,0 +1,141 @@ +--- +layout: api +page_title: /sys/policies/password - HTTP API +sidebar_title: /sys/policies/password +description: >- + The `/sys/policies/password` endpoints are used to manage password generation policies in Vault. +--- + +# `/sys/policies/password/` + +The `/sys/policies/password/` endpoints are used to manage password generation policies in Vault. +Not all secret engines utilize password policies, so check the documentation for the engine you +are using for compatibility. + +~> Password policies are only available in Vault version 1.5+. + +See [Password Policies](/docs/concepts/password-policies) for details of how password policies work +as well as the syntax of the policies themselves. + +## Create/Update Password Policy + +This endpoint adds a new or updates an existing password policy. Once a policy is updated, +it takes effect immediately to all associated secret engines. + +Prior to Vault saving the password policy, it will attempt to generate a number of passwords +from the policy. This helps prevent creating password policies that are impossible to satisfy +as well as prevent password policies that are overly restrictive which prevents both a poor +security posture for the policy as well as preventing performance problems due to slow +generation times. + +| Method | Path | +| :----- | :----------------------------- | +| `PUT` | `/sys/policies/password/:name` | + +### Parameters + +- `name` `(string: )` – Specifies the name of the password policy to create. + This is specified as part of the request URL. + +- `policy` `(string: )` - Specifies the password policy document. This can be + base64-encoded to avoid string escaping. See [Password Policy Syntax](#password-policy-syntax) + for details on password policy definitions. + +### Sample Payload + +```json +{ + "policy": "length = 20\nrule \"charset\" { ..." +} +``` + +### Sample Request + +```shell +$ curl \ + --header "X-Vault-Token: ..." \ + --request PUT \ + --data @payload.json \ + http://127.0.0.1:8200/v1/sys/policies/password/my-policy +``` + +## Read Password Policy + +This endpoint retrieves information about the named password policy. + +| Method | Path | +| :----- | :----------------------------- | +| `GET` | `/sys/policies/password/:name` | + +### Parameters + +- `name` `(string: )` – Specifies the name of the password policy to retrieve. + This is specified as part of the request URL. + +### Sample Request + +```shell +$ curl \ + --header "X-Vault-Token: ..." \ + http://127.0.0.1:8200/v1/sys/policies/password/my-policy +``` + +### Sample Response +```json +{ + "policy": "length = 20\nrule \"charset\" { ..." +} +``` + +## Delete Password Policy + +This endpoint deletes the password policy with the given name. This does not check if any +secret engines are using it prior to deletion, so you should ensure that any engines that +are utilizing this password policy are changed to a different policy (or to that engines' +default behavior). + +| Method | Path | +| :----- | :----------------------------- | +| `GET` | `/sys/policies/password/:name` | + +### Parameters + +- `name` `(string: )` – Specifies the name of the password policy to delete. + This is specified as part of the request URL. + +### Sample Request + +```shell +$ curl \ + --header "X-Vault-Token: ..." \ + --request DELETE + http://127.0.0.1:8200/v1/sys/policies/password/my-policy +``` + +## Generate Password from Password Policy + +This endpoint generates a password from the specified existing password policy. + +| Method | Path | +| :----- | :----------------------------- | +| `GET` | `/sys/policies/password/:name/generate` | + +### Parameters + +- `name` `(string: )` – Specifies the name of the password policy to generate + a password from. This is specified as part of the request URL. + +### Sample Request + +```shell +$ curl \ + --header "X-Vault-Token: ..." \ + http://127.0.0.1:8200/v1/sys/policies/password/my-policy/generate +``` + +### Sample Response +```json +{ + "password": "..." +} +``` diff --git a/website/pages/docs/concepts/password-policies.mdx b/website/pages/docs/concepts/password-policies.mdx new file mode 100644 index 00000000000..3178e4448e0 --- /dev/null +++ b/website/pages/docs/concepts/password-policies.mdx @@ -0,0 +1,278 @@ +--- +layout: docs +page_title: Password Policies +sidebar_title: Password Policies +description: >- + Password policies are used in some secret engines to allow users to define how passwords are generated + for dynamic & static users within those engines. +--- + +# Password Policies +A password policy is a set of instructions on how to generate a password, similar to other password +generators. These password policies are used in a subset of secret engines to allow you to configure +how a password is generated for that engine. Not all secret engines utilize password policies, so check +the documentation for the engine you are using for compatibility. + +~> Password policies are only available in Vault version 1.5+. + +## Design +Passwords policies fundamentally have two parts: a length, and a set of rules that a password must +adhere to. Passwords are randomly generated from the de-duplicated union of charsets found in all rules +and then checked against each of the rules to determine if the candidate password is valid according +to the policy. See [Candidate Password Generation](#candidate-password-generation) for details on how +passwords are generated prior to being checked against the rule set. + +A rule is an assertion upon a candidate password string that indicates whether or not +the password is acceptable. For example: a "charset" rule states that a password must have at least one +lowercase letter in it. This rule will reject any passwords that do not have any lowercase letters in it. + +Multiple rules may be specified within a policy to create more complex rules, such as requiring at least +one lowercase letter, at least one uppercase letter, and at least one number. + +The flow looks like: + +[![Vault Password Policy Flow](/img/vault-password-policy-flow.svg)](/img/vault-password-policy-flow.svg) + +## Candidate Password Generation +How a candidate password is generated is extremely important. Great care must be placed to ensure that +passwords aren't created in a way that can be exploited by threat actors. This section describes how we +generate passwords within password policies to ensure that passwords are generated in as secure of a +fashion as possible. + +To generate a candidate password, three things are needed: + +1. A [cryptographically secure random number generator](https://golang.org/pkg/crypto/rand/) (RNG). +2. A character set (charset) to select characters from. +3. The length of the password. + +At a high level, we use our RNG to generate N numbers that correspond to indices into the charset +array where N is the length of the password we wish to create. Each value returned from the RNG is then +used to extract a character from the charset into the password. + +For example, let's generate a password of length 8 from the charset `abcdefghij`: + +The RNG is used to generate 8 random values. For our example let's say those values are: + +`[3, 2, 7, 8, 8, 3, 5, 1]` + +Each of these values is an index into the charset array: + +`[3, 2, 0, 8, 7, 3, 5, 1]` => `[d, c, a, i, h, d, f, b]` + +This gives us our candidate password: `"dcaihdfb"` which can then be run through the rules of the policy. + +In a real world scenario, the values in the random array will be between `[0-255]` as that is the range of +values that a single byte can be. The value is restricted to the size of the charset array by using the +[modulo operation](https://en.wikipedia.org/wiki/Modulo_operation) to prevent referencing a character +outside the bounds of the charset. However this can introduce a problem with bias. + +### Preventing Bias +When using the [modulo operation](https://en.wikipedia.org/wiki/Modulo_operation) to generate a password, +you must be very careful to prevent the introduction of bias. When generating a random number between +[0-255] for a charset that has a length that isn't evenly divisible into 256, some of the first characters +in the charset may be selected more frequently than the remaining characters. + +To demonstrate this, let's simplify the math. Assume that we have a charset of length 10: `abcdefghij`. +Let's also assume that our RNG generates values `[0-25]`. The first 10 values `0-9` correspond to each +character in our charset. The next 10 values `10-19` also correspond to each character in our charset. +However, the next 6 values `20-25` correspond to only the first 6 characters in the charset. This means +that those 6 characters `abcdef` can be selected more often than the last 4 characters `ghij`. + +In order to prevent this from happening, we calculate the maximum value that we can allow an index to be +based on the length of the charset we are selecting from. In the example above, the maximum index value +we should allow is 19 as that represents the largest integer multiple of the length of the charset array +that is less than the maximum value that our RNG can generate. When our RNG generates any values larger +than our maximum allowed value, that number is ignored and we continue to the next number. Passwords do not +lose any length because we continue generating numbers until the password is fully filled in to the +length requested. + +## Password Policy Syntax +Password policies are defined in [HCL](https://github.com/hashicorp/hcl) or JSON which defines +the length of the password and a set of rules a password must adhere to. + +Here is a very simple policy which generates 20 character passwords from lowercase characters: + +```hcl +length = 20 +rule "charset" { + charset = "abcdefghijklmnopqrstuvwxyz" +} +``` + +Multiple rules may be specified, including multiple rules of the same type. For instance, the following +policy will generate a 20 character password with at least one lowercase letter, at least one uppercase +letter, at least one number, and at least one symbol from the set `!@#$%^&*`: + +```hcl +length = 20 +rule "charset" { + charset = "abcdefghijklmnopqrstuvwxyz" + min-chars = 1 +} +rule "charset" { + charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + min-chars = 1 +} +rule "charset" { + charset = "0123456789" + min-chars = 1 +} +rule "charset" { + charset = "!@#$%^&*" + min-chars = 1 +} +``` + +## Available Rules + +### `charset` +Allows you to specify a minimum number of characters from a given charset. For instance: a password must +have at least one lowercase letter. This rule also helps construct the charset that the password generation +utilizes. In order to generate a password, a charset must be specified. + +If multiple charsets are specified, all of the charsets will be combined and de-duplicated prior to +generating any candidate passwords. Each individual `charset` rule will still need to be adhered to in +order to successfully generate passwords. + +~> After combining and de-duplicating charsets, the length of the charset that candidate passwords + are generated from must be no longer than 256 characters. + +**Example:** + +```hcl +length = 20 +rule "charset" { + charset = "abcde" + min-chars = 1 +} +rule "charset" { + charset = "01234" + min-chars = 1 +} +``` + +This policy will generate passwords from the charset `abcde01234` however, the password must have at +least one character that is from `abcde` and at least one character from `01234`. If charsets overlap +between rules, the charsets will be de-duplicated for the to prevent bias towards the overlapping set. +For instance: if you have two charset rules: `abcde` & `cdefg`, the charset `abcdefg` will be used to +generate candidate passwords, but a least one character from each `abcde` & `cdefg` must still appear +in the password. + +If `min-chars` is not specified (or set to `0`) then this charset will not have a minimum required number +of characters, but it will be used to select characters from. Example: + +```hcl +length = 20 +rule "charset" { + charset = "abcde" +} +rule "charset" { + charset = "01234" + min-chars = 1 +} +``` + +This policy generates 20 character passwords from the charset `abcde01234` and requires at least one +character from `01234` to be in it, but does not require any characters from `abcde`. The password `04031` +may result from this policy, even though no alphabetical characters are in it. + +#### Parameters +- `charset` `(string: )` – A string representation of the character set that this rule observes. + Accepts UTF-8 compatible strings. All characters within the string must be printable. +- `min-chars` `(int: 0)` - Specifies a minimum number of characters required from the charset specified in + this rule. For example: if `min-chars = 2`, the password must have at least 2 characters from `charset`. + +## Performance Characteristics +Characterizing password generation performance with this model is heavily dependent on the policy +configuration. In short, the more restrictive the policy, the longer it will take to generate a password. +This generalization isn't always true, but is a general guideline. + +Here are some examples policy configurations with their performance characteristics below: + +
+No Restrictions (94 chars) + +```hcl +rule "charset" { + charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~" +} +``` +
+ +
+One each: Alphabetic, Numeric, and '-' (63 chars) + +```hcl +rule "charset" { + charset = "abcdefghijklmnopqrstuvwxyz" + min-chars = 1 +} +rule "charset" { + charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + min-chars = 1 +} +rule "charset" { + charset = "0123456789" + min-chars = 1 +} +rule "charset" { + charset = "-" + min-chars = 1 +} +``` +
+ +
+One each: Alphabetic, Numeric & All ASCII Symbols (94 chars) + +```hcl +rule "charset" { + charset = "abcdefghijklmnopqrstuvwxyz" + min-chars = 1 +} +rule "charset" { + charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + min-chars = 1 +} +rule "charset" { + charset = "0123456789" + min-chars = 1 +} +rule "charset" { + charset = "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~" + min-chars = 1 +} +``` +
+ +
+One each: Alphabetic & a subset of unicode characters (256 chars) + +```hcl +rule "charset" { + charset = "abcdefghijklmnopqrstuvwxyz" + min-chars = 1 +} +rule "charset" { + charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + min-chars = 1 +} +rule "charset" { + charset = "ĩĪīĬĭĮįİıIJijĴĵĶķĸĹĺĻļĽľĿŀŁłŃńŅņŇňʼnŊŋŌōŎŏŐőŒ" + min-chars = 1 +} + +# Filling in the rest of the charset to 256 characters +rule "charset" { + charset = "0123456789" +} +rule "charset" { + charset = " !\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~" +} +rule "charset" { + charset = "ĀāĂ㥹ĆćĈĉĊċČčĎďĐđĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħĨœŔŕŖŗŘřŚśŜŝŞşŠšŢţŤťŦŧŨũŪūŬŭŮůŰűŲųŴŵŶŷŸŹźŻżŽžſ℀℁ℂ℃℄℅℆ℇ℈℉ℊℋℌℍℎℏℐℑℒℓ℔ℕ№℗℘ℙℚℛℜℝ℞℟℠" +} +``` +
+ +[![Password Policy Performance](/img/vault-password-policy-performance.png)](/img/vault-password-policy-performance.png) diff --git a/website/public/img/vault-password-policy-flow.svg b/website/public/img/vault-password-policy-flow.svg new file mode 100644 index 00000000000..3c000b7112d --- /dev/null +++ b/website/public/img/vault-password-policy-flow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/website/public/img/vault-password-policy-performance.png b/website/public/img/vault-password-policy-performance.png new file mode 100644 index 0000000000000000000000000000000000000000..b3a15fd9ad71255c49c7c7d0ef0e084fabf762e2 GIT binary patch literal 131598 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�Pf(l^mP)=4MSp!`Q;YLT#LJ6?H8G zMayG5J6u7*wW^(|7-|}tUf_RB5qa@vX;^%GJ}8`);bHX7&W_^UyXv=Yy|{7XMt7x~ zBY>x_#9b<%Ng&u@h-fX-U0?#I)iF5~HYX>?)6>(5wC9H4CUycua&(?^LSA0pTz3{b z3~#W^Q2`)7FTrd$$V0sW<9qiqCng>nl{-D{n*wWr=?&_RtTrl$Nmz5A zxY2^=%?FyP-qx{*TenUe; z)H^SXlQ2aKRHJ#p(!{$*eMem=H7;Mitf;1@_v~58ufajQ*Px>rW)!m!wf5^fcC0KBlYT4@XzitLEp=e-FJKway9dYS|oPshZR%_`*{ z*&BA$qfYYfBDTLWVbF>^G2+rsM{c4_+0z{z9Vh4J^e0bRP*G6<91K=_830Vu(q^V(KYYNu zu0DLyUnqyS?(2R3?`hhwuPJc!Ju@z8t`bBnjor-5q0$(dIS*MRAaf7~q$JJ-b z`X1#5!D4J|JO>#8p?BHb+#J=JsgY7_H!M9lJ*{<(0uxx}v4yB53CF3oo?c!X1J<~x ztMrFPA_|L&RBCnQNoEJ6Por@%d2CT{E+EdVb?vz?T?X5w-Xm_tj+fi?f0OW@F>xbU?sDmMaE3 zVsseXCPyR_g*Vk;<#J9l2{;*9gcuNYXt zVlBwgB*rEuUj%)i+%CPF3-NVDR8$o7Nso}D64t@d5pUVWamA=yTUAxneSf2m4yF|_ z2+3}VXA6;V8mUL9Xfk026;)Ky3S1wb21(gp@W2-kdIIz$60EzsG2x7BYinIED38N? zyr_Y4=N$MwtQ3`W?Jj70;Rm1pf=i%zKtzD_(;<`g%iR7-RLsxMPiIzqGEl4$Bk}}b z9-XfS^0B+vQVZ1y)9f_e#zIY{eHKdK?nX9DE(io}VPPG>-wqJn-5_Qh_G4pXC#I&- zD_oX!%P_tBUY`~g79fG|*gv;QE-uzagifTuqxBv=bd!aU)yhaMaqJC$b1U)fyLY|o zvt5%53w)5?mjSs!*$h;BRctQ)%m9#wjNla!(FH}=2MUSt{0VJ#SVSVY20bYXr;MuH zb%3&o3q|egK<^RrE?Y}Rc}5kwz?W7X$$rwr8TKxz)6C4wlt+(7hwD_kEXRx34Z-7| zzCIkkctZ%R18tBt63%m%)YRIkJ*I_heyD?b?AVy^bDr(IOh-?zDMW#}XKR};y*+Zo zYqf!)+-tW4L45PJ^Uh1ZqV{(w_Ba4o`uqD)SU6{%xIs%HCKU$Xva&M1gcI6lA$AdR zw^R!>Pw>(eH2bCwB*DAx?BIY9U}|Blh@YPyowOQgfeesaZmzBcdTi<{v`|ZdoOfSq z6?Gn~KL&thSs!p3Qdz&ur{dG6dr?tQ$VgHPpA#S^^425as9m73yUQHS7k_-b4T29e z<5L)ge#NsqWA7bP6c$8fHHl~q6_56e0fhASwrl^-pE(c-pgOtwY#%*J0dD|A7pPQ32qdDZx7Tffcpbu3Dlq6fj7&O{@Ck@I+2m>{* z?NNU#7>M6B77Ctmh(LaRepphVCIh+wK|w*NG}%#zju4ibN3(0Q<$t>YT zEJolE93IPsA0O$KFy~Gj1@OuSnX6;G_UlyD!s6oO_;?EB(AR;1Xeb$%B9cJ-hJhGJ z7q;%zmiRtJntmM<69aBi98l0|WT%yIbQS4MOK`2ti%)J&=yqX>mZfYJ2RB zezj*AtH**s|BoLtz#WKgfN@MLEac`JRYY%oqVO5^`1r|TQqc%-6vQ?d584kOCW97$ z^l)_4Dl%&YNRc0<2<=L`O(nJY;}Mix@58Se@jy5tqCP%8Uc!An6DT(o%IPeRttG3$ za$zt|e!)T^cnVCuarnp)X9y3)T_TZ~ZP}F$>!@d9k_g2;-gC#nYiBYd8%?N=_a<5* zkqR@={puvMHk93ZpPo0hqT{^ zge1YyQ9Lm$(oh&8AS)tLatjUCBa|8~{r&d=zPlmfLL(zHfeS$x>SSwWyaPGD(WNG1 zxjxfz{oDzdXU$UEK`tTI`+pg@S|B(Bh^-QJU5??Zp*n<)4h&3OOe}J97@JCYoIVo* zQyD|K;t$VH>L_M)va-tNP>xhL9R_>EVyMy$bb9(zie_+7`wAY^Ayf^dx(^OqCx8(L zC|V$6sHtzDKGz(C8GwH#D2hoD&@AmfhdkP-h z2Bx!G9;ym_`&Jvo^yKVp*500HT6%gjq;pbI5|h}|3w}rW3}G=5?VDx8SPKf$dTVJg zY;$9Cvo{A*xS-1UZKne7KjYN0$ zY|4ulhw*m9#xi>=zM$ROY_3qy?Kz0oHiy$!I!rd(m6xo8)eslfU12nc8Zv&{7uWtg=_ry;IXbD)-W4K^(!gZJ{~$>(i) zi17su27mSTtvE>+T_6q+nPJhDuLicXSf|#Z2tIa6Fyp z&c(+k?E&&w>23x3>ow`~lPlVhjLi&PAEWCw+HKWdz+~ z=uT!!kq=6~=xTBO`gNqd0OA1^VZQ+G}$fdJ3l|V<&)z6_u4k!6Rf6vH42!bWOc-zp#E?O6l}i z$mr5iej}^L+gs3SBICU6u9;ptr|j{7q6SeVnxMUYD8W9K8|#i(2>fiAGTI|kTU$!V z^@s;QCNu~40{QdGg#N!T{x{8m4Hwd}rf{?eJBCHZ+fY75qqepdN$-X|TL@PyQ1As5 zR3;sO5YFo}8sMI&vq(6-_xGp5AUoM8vW3n5+@I$fGc<7eULHHU4qcF0kdyRl9!8&@ z%Hjy5@~O5sYxi78AYiob*0`#4)0XgAkU4vQzC3gDAm$>2prYuCNE35eiXFm`y%0mv z($cc>&m%upnE!Lfntyq&Ue&d?7w|*A+-Lat!Pao(1%+Adt24;|Gie})icMSSy#Tck zX@c0}=guK@Ul!Q!zt`7=HmX2f0k&nFk;V!2ui>IGrvIc>b{p#C2xOin?;8v1HbuxWx}0D?%l{S9!!+wX3`jhX{TD zJ`wS?dhPM2cCUbhi{_`R?5azla2aNyo!SkMNJ1&L9*4 z?*I3Jp~P_l!@a9$oV!U{P| z+>Mj+(1jHZO-V_~LW6|^Od$NQ{_iKl)ke%BHtH~Urb0}J0Ss*hV1oovW*E6o!=rzdO&(n^P#@4J(24XwuaZ^1&F$1{atvoWiC%GX(MX8PJ{@ z*!Au4;1)1?czKmHG&I0)*0Hz$hy)@u7?GY1;u5DTM?H*|>-l8=XlHwS2AXgY4<9~M zZrlXP0n{-uI{Gi__v)%fj&9ziFh8p;a9R-a8(}|CVH_yX^?7gQQ@|5XgJKNWu0hBV zc`gS9ADtjv*9D7_i+IrGPAFKcxz4mVFmqeE4dA2oK>}Pt`O~m;8rW4KHj9=AII*@v zm03{nWC0D%&d!#D&s_EhoUNw8!Kz=6;ENrcorPIapkxI~R8&>fT^zte4XStb=7(mp zM?Jas*PeTyg0cqYFx2B4;8n5V1DI=|X1BV7kc16k@I%ilC1v!dEl^*7=Q0Ne$&3s} z2=%TBR3;$wvwl4SxA~}V(yvFL_d3B71rs~ZVfWFXxvA-81_lPkpf56e9%7P`Ee#ER zqO@?toA`rU;?+C^0r(YMIV{pDAwZWFl#Vc-ED?)TRyU-ioFVCD_KFM*4Uvi*3}D3w zNLY*MG1sD5pomMv2a*uXsE%vYf$fGWo1=zBgb4p7bO3IX1*|}Ho=#FI%+18uqG=ia(?uTJ))qRxU4ormVBgvX{$*(TW1^EJ

!@vLji!?XDcM}FL3F_!f z(2iigcO&8*stoYExVgCQLWE{HVRDC49@M>>8>*^6`XpBjN@n0w;I+px30Wk9_Puhi z;ATfh2OWR2jg4{(yD_v@pev{jV8^!Yj10l&^1-d3Or9YvMsQz{+E-`OZ9GU+$h4Uj ztbzNWnISB+01cto&;bRBLe?2>#IeA1!?ghVYOCm~d}%KtbSqE^-oz{@Dbm0Rj~W0k z1^OnC@>;gx;ozxRmLbh$EBJE6PebTw$O0L|Hr;>VuVjgTP_Mslf931YkTI0Sz0l2q zR>DOnJ_bM8*U?%*31VIQf|5zl?5$;ZH@|NN+8cv54Mt)8{r#bZkpWiXj30xsdX@VI z*zkGN@gAyg82AyP&VvHaQE+h*3XLl#8L!`gPh6J@2j8{0xL6S*Z;DIG?)$SDD*Q_U zSgBoym;UHbWO%HWn8&BG(f(4v<;~DefF3e5;Z(7#gOt zWB(FJm-^JHKF$QsWLThC-&4}>2?Pv0pdluP7Ywt56ZRn^VBfX%?I3=2m)cc{Qs^+L zzSdS1r11;QD6mb*q3TN5tLW-nFcS@=rKR0rZ9+prH1hYsl141kOHGZ93P28F)gsW+ zz4a$=GY@QctG<9FN*&Ag5v)%2PSJR7{2?3F9ZMY Date: Tue, 12 May 2020 14:50:22 -0600 Subject: [PATCH 2/8] Wordsmithing; Updated performance graph to svg --- .../pages/docs/concepts/password-policies.mdx | 22 +++++++++++++----- .../img/vault-password-policy-performance.png | Bin 131598 -> 0 bytes .../img/vault-password-policy-performance.svg | 1 + 3 files changed, 17 insertions(+), 6 deletions(-) delete mode 100644 website/public/img/vault-password-policy-performance.png create mode 100644 website/public/img/vault-password-policy-performance.svg diff --git a/website/pages/docs/concepts/password-policies.mdx b/website/pages/docs/concepts/password-policies.mdx index 3178e4448e0..9e7e2ac84df 100644 --- a/website/pages/docs/concepts/password-policies.mdx +++ b/website/pages/docs/concepts/password-policies.mdx @@ -13,7 +13,10 @@ generators. These password policies are used in a subset of secret engines to al how a password is generated for that engine. Not all secret engines utilize password policies, so check the documentation for the engine you are using for compatibility. -~> Password policies are only available in Vault version 1.5+. +Password policies are available in Vault version 1.5+. + +!> Password policies are an advanced usage of Vault. This generates credentials for external systems + (databases, LDAP, AWS, etc.) and should be used with caution. ## Design Passwords policies fundamentally have two parts: a length, and a set of rules that a password must @@ -36,8 +39,7 @@ The flow looks like: ## Candidate Password Generation How a candidate password is generated is extremely important. Great care must be placed to ensure that passwords aren't created in a way that can be exploited by threat actors. This section describes how we -generate passwords within password policies to ensure that passwords are generated in as secure of a -fashion as possible. +generate passwords within password policies to ensure that passwords are generated as securely as possible. To generate a candidate password, three things are needed: @@ -53,13 +55,13 @@ For example, let's generate a password of length 8 from the charset `abcdefghij` The RNG is used to generate 8 random values. For our example let's say those values are: -`[3, 2, 7, 8, 8, 3, 5, 1]` +`[3, 2, 0, 8, 7, 3, 5, 1]` Each of these values is an index into the charset array: `[3, 2, 0, 8, 7, 3, 5, 1]` => `[d, c, a, i, h, d, f, b]` -This gives us our candidate password: `"dcaihdfb"` which can then be run through the rules of the policy. +This gives us our candidate password: `dcaihdfb` which can then be run through the rules of the policy. In a real world scenario, the values in the random array will be between `[0-255]` as that is the range of values that a single byte can be. The value is restricted to the size of the charset array by using the @@ -123,6 +125,14 @@ rule "charset" { } ``` +At least one charset must be specified for a policy to be valid. In order to generate a password, a charset +must be available to select characters from and these policies do not have a default charset specified. +The following policy is **NOT** valid and will be rejected: + +```hcl +length = 20 +``` + ## Available Rules ### `charset` @@ -275,4 +285,4 @@ rule "charset" { ``` -[![Password Policy Performance](/img/vault-password-policy-performance.png)](/img/vault-password-policy-performance.png) +[![Password Policy Performance](/img/vault-password-policy-performance.svg)](/img/vault-password-policy-performance.svg) diff --git a/website/public/img/vault-password-policy-performance.png b/website/public/img/vault-password-policy-performance.png deleted file mode 100644 index b3a15fd9ad71255c49c7c7d0ef0e084fabf762e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 131598 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�Pf(l^mP)=4MSp!`Q;YLT#LJ6?H8G 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

!@vLji!?XDcM}FL3F_!f z(2iigcO&8*stoYExVgCQLWE{HVRDC49@M>>8>*^6`XpBjN@n0w;I+px30Wk9_Puhi z;ATfh2OWR2jg4{(yD_v@pev{jV8^!Yj10l&^1-d3Or9YvMsQz{+E-`OZ9GU+$h4Uj ztbzNWnISB+01cto&;bRBLe?2>#IeA1!?ghVYOCm~d}%KtbSqE^-oz{@Dbm0Rj~W0k z1^OnC@>;gx;ozxRmLbh$EBJE6PebTw$O0L|Hr;>VuVjgTP_Mslf931YkTI0Sz0l2q zR>DOnJ_bM8*U?%*31VIQf|5zl?5$;ZH@|NN+8cv54Mt)8{r#bZkpWiXj30xsdX@VI z*zkGN@gAyg82AyP&VvHaQE+h*3XLl#8L!`gPh6J@2j8{0xL6S*Z;DIG?)$SDD*Q_U zSgBoym;UHbWO%HWn8&BG(f(4v<;~DefF3e5;Z(7#gOt zWB(FJm-^JHKF$QsWLThC-&4}>2?Pv0pdluP7Ywt56ZRn^VBfX%?I3=2m)cc{Qs^+L zzSdS1r11;QD6mb*q3TN5tLW-nFcS@=rKR0rZ9+prH1hYsl141kOHGZ93P28F)gsW+ zz4a$=GY@QctG<9FN*&Ag5v)%2PSJR7{2?3F9ZMY \ No newline at end of file From a9449d023902e5f5426936883e02c3e0521906df Mon Sep 17 00:00:00 2001 From: Michael Golowka <72365+pcman312@users.noreply.github.com> Date: Mon, 18 May 2020 11:05:59 -0600 Subject: [PATCH 3/8] Moved rules below performance; Wordsmithing --- .../pages/docs/concepts/password-policies.mdx | 120 +++++++++--------- 1 file changed, 61 insertions(+), 59 deletions(-) diff --git a/website/pages/docs/concepts/password-policies.mdx b/website/pages/docs/concepts/password-policies.mdx index 9e7e2ac84df..af1ea85e390 100644 --- a/website/pages/docs/concepts/password-policies.mdx +++ b/website/pages/docs/concepts/password-policies.mdx @@ -13,6 +13,8 @@ generators. These password policies are used in a subset of secret engines to al how a password is generated for that engine. Not all secret engines utilize password policies, so check the documentation for the engine you are using for compatibility. +**Note:** Password policies are unrelated to [Policies](/docs/concepts/policies) other than sharing similar names. + Password policies are available in Vault version 1.5+. !> Password policies are an advanced usage of Vault. This generates credentials for external systems @@ -133,65 +135,6 @@ The following policy is **NOT** valid and will be rejected: length = 20 ``` -## Available Rules - -### `charset` -Allows you to specify a minimum number of characters from a given charset. For instance: a password must -have at least one lowercase letter. This rule also helps construct the charset that the password generation -utilizes. In order to generate a password, a charset must be specified. - -If multiple charsets are specified, all of the charsets will be combined and de-duplicated prior to -generating any candidate passwords. Each individual `charset` rule will still need to be adhered to in -order to successfully generate passwords. - -~> After combining and de-duplicating charsets, the length of the charset that candidate passwords - are generated from must be no longer than 256 characters. - -**Example:** - -```hcl -length = 20 -rule "charset" { - charset = "abcde" - min-chars = 1 -} -rule "charset" { - charset = "01234" - min-chars = 1 -} -``` - -This policy will generate passwords from the charset `abcde01234` however, the password must have at -least one character that is from `abcde` and at least one character from `01234`. If charsets overlap -between rules, the charsets will be de-duplicated for the to prevent bias towards the overlapping set. -For instance: if you have two charset rules: `abcde` & `cdefg`, the charset `abcdefg` will be used to -generate candidate passwords, but a least one character from each `abcde` & `cdefg` must still appear -in the password. - -If `min-chars` is not specified (or set to `0`) then this charset will not have a minimum required number -of characters, but it will be used to select characters from. Example: - -```hcl -length = 20 -rule "charset" { - charset = "abcde" -} -rule "charset" { - charset = "01234" - min-chars = 1 -} -``` - -This policy generates 20 character passwords from the charset `abcde01234` and requires at least one -character from `01234` to be in it, but does not require any characters from `abcde`. The password `04031` -may result from this policy, even though no alphabetical characters are in it. - -#### Parameters -- `charset` `(string: )` – A string representation of the character set that this rule observes. - Accepts UTF-8 compatible strings. All characters within the string must be printable. -- `min-chars` `(int: 0)` - Specifies a minimum number of characters required from the charset specified in - this rule. For example: if `min-chars = 2`, the password must have at least 2 characters from `charset`. - ## Performance Characteristics Characterizing password generation performance with this model is heavily dependent on the policy configuration. In short, the more restrictive the policy, the longer it will take to generate a password. @@ -286,3 +229,62 @@ rule "charset" { [![Password Policy Performance](/img/vault-password-policy-performance.svg)](/img/vault-password-policy-performance.svg) + +## Available Rules + +### `charset` +Allows you to specify a minimum number of characters from a given charset. For instance: a password must +have at least one lowercase letter. This rule also helps construct the charset that the password generation +utilizes. In order to generate a password, a charset must be specified. + +If multiple charsets are specified, all of the charsets will be combined and de-duplicated prior to +generating any candidate passwords. Each individual `charset` rule will still need to be adhered to in +order to successfully generate passwords. + +~> After combining and de-duplicating charsets, the length of the charset that candidate passwords + are generated from must be no longer than 256 characters. + +**Example:** + +```hcl +length = 20 +rule "charset" { + charset = "abcde" + min-chars = 1 +} +rule "charset" { + charset = "01234" + min-chars = 1 +} +``` + +This policy will generate passwords from the charset `abcde01234` however, the password must have at +least one character that is from `abcde` and at least one character from `01234`. If charsets overlap +between rules, the charsets will be de-duplicated for the to prevent bias towards the overlapping set. +For instance: if you have two charset rules: `abcde` & `cdefg`, the charset `abcdefg` will be used to +generate candidate passwords, but a least one character from each `abcde` & `cdefg` must still appear +in the password. + +If `min-chars` is not specified (or set to `0`) then this charset will not have a minimum required number +of characters, but it will be used to select characters from. Example: + +```hcl +length = 20 +rule "charset" { + charset = "abcde" +} +rule "charset" { + charset = "01234" + min-chars = 1 +} +``` + +This policy generates 20 character passwords from the charset `abcde01234` and requires at least one +character from `01234` to be in it, but does not require any characters from `abcde`. The password `04031` +may result from this policy, even though no alphabetical characters are in it. + +#### Parameters +- `charset` `(string: )` – A string representation of the character set that this rule observes. + Accepts UTF-8 compatible strings. All characters within the string must be printable. +- `min-chars` `(int: 0)` - Specifies a minimum number of characters required from the charset specified in + this rule. For example: if `min-chars = 2`, the password must have at least 2 characters from `charset`. From 66c9843e526cf35c89c8a6c99fe3b5d845544287 Mon Sep 17 00:00:00 2001 From: Michael Golowka <72365+pcman312@users.noreply.github.com> Date: Wed, 27 May 2020 12:22:16 -0600 Subject: [PATCH 4/8] Fix grammar & typos; improve performance graph --- .../api-docs/system/policies-password.mdx | 2 +- .../pages/docs/concepts/password-policies.mdx | 30 +- .../img/vault-password-policy-performance.svg | 419 +++++++++++++++++- 3 files changed, 434 insertions(+), 17 deletions(-) diff --git a/website/pages/api-docs/system/policies-password.mdx b/website/pages/api-docs/system/policies-password.mdx index 090d39a2901..9a3cb14a64e 100644 --- a/website/pages/api-docs/system/policies-password.mdx +++ b/website/pages/api-docs/system/policies-password.mdx @@ -96,7 +96,7 @@ default behavior). | Method | Path | | :----- | :----------------------------- | -| `GET` | `/sys/policies/password/:name` | +| `DELETE` | `/sys/policies/password/:name` | ### Parameters diff --git a/website/pages/docs/concepts/password-policies.mdx b/website/pages/docs/concepts/password-policies.mdx index af1ea85e390..78fa5cf0adc 100644 --- a/website/pages/docs/concepts/password-policies.mdx +++ b/website/pages/docs/concepts/password-policies.mdx @@ -21,7 +21,7 @@ Password policies are available in Vault version 1.5+. (databases, LDAP, AWS, etc.) and should be used with caution. ## Design -Passwords policies fundamentally have two parts: a length, and a set of rules that a password must +Password policies fundamentally have two parts: a length, and a set of rules that a password must adhere to. Passwords are randomly generated from the de-duplicated union of charsets found in all rules and then checked against each of the rules to determine if the candidate password is valid according to the policy. See [Candidate Password Generation](#candidate-password-generation) for details on how @@ -82,12 +82,12 @@ character in our charset. The next 10 values `10-19` also correspond to each cha However, the next 6 values `20-25` correspond to only the first 6 characters in the charset. This means that those 6 characters `abcdef` can be selected more often than the last 4 characters `ghij`. -In order to prevent this from happening, we calculate the maximum value that we can allow an index to be -based on the length of the charset we are selecting from. In the example above, the maximum index value -we should allow is 19 as that represents the largest integer multiple of the length of the charset array -that is less than the maximum value that our RNG can generate. When our RNG generates any values larger -than our maximum allowed value, that number is ignored and we continue to the next number. Passwords do not -lose any length because we continue generating numbers until the password is fully filled in to the +In order to prevent this from happening, we calculate the maximum value that we can allow an index to be. +This is based on the length of the charset we are selecting from. In the example above, the maximum index +value we should allow is 19 as that represents the largest integer multiple of the length of the charset +array that is less than the maximum value that our RNG can generate. When our RNG generates any values +larger than our maximum allowed value, that number is ignored and we continue to the next number. Passwords +do not lose any length because we continue generating numbers until the password is fully filled in to the length requested. ## Password Policy Syntax @@ -128,7 +128,7 @@ rule "charset" { ``` At least one charset must be specified for a policy to be valid. In order to generate a password, a charset -must be available to select characters from and these policies do not have a default charset specified. +must be available to select characters from and password policies do not have a default charset. The following policy is **NOT** valid and will be rejected: ```hcl @@ -140,7 +140,7 @@ Characterizing password generation performance with this model is heavily depend configuration. In short, the more restrictive the policy, the longer it will take to generate a password. This generalization isn't always true, but is a general guideline. -Here are some examples policy configurations with their performance characteristics below: +Here are some example policy configurations with their performance characteristics below:

No Restrictions (94 chars) @@ -258,9 +258,9 @@ rule "charset" { } ``` -This policy will generate passwords from the charset `abcde01234` however, the password must have at +This policy will generate passwords from the charset `abcde01234`. However, the password must have at least one character that is from `abcde` and at least one character from `01234`. If charsets overlap -between rules, the charsets will be de-duplicated for the to prevent bias towards the overlapping set. +between rules, the charsets will be de-duplicated to prevent bias towards the overlapping set. For instance: if you have two charset rules: `abcde` & `cdefg`, the charset `abcdefg` will be used to generate candidate passwords, but a least one character from each `abcde` & `cdefg` must still appear in the password. @@ -269,7 +269,7 @@ If `min-chars` is not specified (or set to `0`) then this charset will not have of characters, but it will be used to select characters from. Example: ```hcl -length = 20 +length = 8 rule "charset" { charset = "abcde" } @@ -279,9 +279,9 @@ rule "charset" { } ``` -This policy generates 20 character passwords from the charset `abcde01234` and requires at least one -character from `01234` to be in it, but does not require any characters from `abcde`. The password `04031` -may result from this policy, even though no alphabetical characters are in it. +This policy generates 8 character passwords from the charset `abcde01234` and requires at least one +character from `01234` to be in it, but does not require any characters from `abcde`. The password +`04031945` may result from this policy, even though no alphabetical characters are in it. #### Parameters - `charset` `(string: )` – A string representation of the character set that this rule observes. diff --git a/website/public/img/vault-password-policy-performance.svg b/website/public/img/vault-password-policy-performance.svg index 9a9524807f0..8cb445d32a4 100644 --- a/website/public/img/vault-password-policy-performance.svg +++ b/website/public/img/vault-password-policy-performance.svg @@ -1 +1,418 @@ - \ No newline at end of file + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 462e31d41ec4b6391a9849cf3ee09ef796f200bf Mon Sep 17 00:00:00 2001 From: Michael Golowka <72365+pcman312@users.noreply.github.com> Date: Fri, 29 May 2020 16:40:05 -0600 Subject: [PATCH 5/8] Improved performance section; wordsmithing --- .../api-docs/system/policies-password.mdx | 18 +- .../pages/docs/concepts/password-policies.mdx | 164 ++++--- .../img/vault-password-policy-chance.svg | 1 + .../img/vault-password-policy-performance.svg | 419 +----------------- 4 files changed, 123 insertions(+), 479 deletions(-) create mode 100644 website/public/img/vault-password-policy-chance.svg diff --git a/website/pages/api-docs/system/policies-password.mdx b/website/pages/api-docs/system/policies-password.mdx index 9a3cb14a64e..1d6700b4bf7 100644 --- a/website/pages/api-docs/system/policies-password.mdx +++ b/website/pages/api-docs/system/policies-password.mdx @@ -50,8 +50,13 @@ generation times. ``` ### Sample Request - +**cURL:** ```shell +$ cat payload.json +{ + "policy": "length = 20\nrule \"charset\" {\n charset = \"abcde\"\n}\n" +} + $ curl \ --header "X-Vault-Token: ..." \ --request PUT \ @@ -59,6 +64,17 @@ $ curl \ http://127.0.0.1:8200/v1/sys/policies/password/my-policy ``` +**Vault CLI:** +```shell +$ cat my-policy.hcl +length = 20 +rule "charset" { + charset = "abcde" +} + +$ vault write sys/policies/password/my-policy policy=@my-policy.hcl +``` + ## Read Password Policy This endpoint retrieves information about the named password policy. diff --git a/website/pages/docs/concepts/password-policies.mdx b/website/pages/docs/concepts/password-policies.mdx index 78fa5cf0adc..c4f5293aa37 100644 --- a/website/pages/docs/concepts/password-policies.mdx +++ b/website/pages/docs/concepts/password-policies.mdx @@ -90,25 +90,43 @@ larger than our maximum allowed value, that number is ignored and we continue to do not lose any length because we continue generating numbers until the password is fully filled in to the length requested. -## Password Policy Syntax -Password policies are defined in [HCL](https://github.com/hashicorp/hcl) or JSON which defines -the length of the password and a set of rules a password must adhere to. +## Performance Characteristics +Characterizing password generation performance with this model is heavily dependent on the policy +configuration. In short, the more restrictive the policy, the longer it will take to generate a password. +This generalization isn't always true, but is a general guideline. The performance curve can be generalized: -Here is a very simple policy which generates 20 character passwords from lowercase characters: +`(time to generate a candidate password) * (number of candidate passwords generated)` + +Where the number of times a candidate password needs to be generated is a function of how likely a given +candidate password does not pass all of the rules. + +Here are some example policy configurations with their performance characteristics below. Each of these +policies have the same charset that candidate passwords are generated from (94 characters). The only +difference is the minimum number of characters for various character subsets. + +
+No Minimum Characters ```hcl -length = 20 rule "charset" { charset = "abcdefghijklmnopqrstuvwxyz" } +rule "charset" { + charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" +} +rule "charset" { + charset = "0123456789" +} +rule "charset" { + charset = "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~" +} ``` +
-Multiple rules may be specified, including multiple rules of the same type. For instance, the following -policy will generate a 20 character password with at least one lowercase letter, at least one uppercase -letter, at least one number, and at least one symbol from the set `!@#$%^&*`: +
+1 uppercase, 1 lowercase, 1 numeric ```hcl -length = 20 rule "charset" { charset = "abcdefghijklmnopqrstuvwxyz" min-chars = 1 @@ -122,38 +140,13 @@ rule "charset" { min-chars = 1 } rule "charset" { - charset = "!@#$%^&*" - min-chars = 1 -} -``` - -At least one charset must be specified for a policy to be valid. In order to generate a password, a charset -must be available to select characters from and password policies do not have a default charset. -The following policy is **NOT** valid and will be rejected: - -```hcl -length = 20 -``` - -## Performance Characteristics -Characterizing password generation performance with this model is heavily dependent on the policy -configuration. In short, the more restrictive the policy, the longer it will take to generate a password. -This generalization isn't always true, but is a general guideline. - -Here are some example policy configurations with their performance characteristics below: - -
-No Restrictions (94 chars) - -```hcl -rule "charset" { - charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~" + charset = "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~" } ```
-One each: Alphabetic, Numeric, and '-' (63 chars) +1 uppercase, 1 lowercase, 1 numeric, 1 from all ASCII characters ```hcl rule "charset" { @@ -169,14 +162,14 @@ rule "charset" { min-chars = 1 } rule "charset" { - charset = "-" + charset = "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~" min-chars = 1 } ```
-One each: Alphabetic, Numeric & All ASCII Symbols (94 chars) +1 uppercase, 1 lowercase, 1 numeric, 1 from !@#$ ```hcl rule "charset" { @@ -192,47 +185,97 @@ rule "charset" { min-chars = 1 } rule "charset" { - charset = "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~" + charset = "!@#$" min-chars = 1 } +# Fleshes out the rest of the symbols but doesn't add any required characters +rule "charset" { + charset = "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~" +} ```
+[![Password Policy Performance](/img/vault-password-policy-performance.svg)](/img/vault-password-policy-performance.svg) + +In these examples, as the length of the password increases, the amount of time to generate a password trends +down. This is because the chance of generating a given character from each of the required subsets increases +simply because the number of "tries" increases. The chance of selecting a character from each of the required +subsets increases as we select more characters. Combine this with the increasing time required to generate more +characters and you get a performance graph as shown above. +
-One each: Alphabetic & a subset of unicode characters (256 chars) +More details regarding probability for generating passwords + +In the examples above, the charset being used to generate candidate passwords is 94 characters long. +Randomly choosing a given character from the 94 character charset has a 1/94 chance. Choosing a single +character from it after N tries (where N is the length of the password) is `1-(1-1/94)^N`. + +If we expand this to look at a subset of characters (such as lowercase characters) the chances of selecting +a character from that subset is `1-(1-L/94)^N` where `L` is the length of the subset. For lowercase +characters, we get a probability of `1-(1-26/94)^N`. + +If we do this for uppercase letters as well as numbers, then we get a combined probability curve: + +`p = (1-(1-26/94)^N) * (1-(1-26/94)^N) * (1-(1-10/94)^N)` + +[![Chance of Generating a Good Password - 1](/img/vault-password-policy-chance.svg)](/img/vault-password-policy-chance.svg) + +
+ +## Password Policy Syntax +Password policies are defined in [HCL](https://github.com/hashicorp/hcl) or JSON which defines +the length of the password and a set of rules a password must adhere to. + +Here is a very simple policy which generates 20 character passwords from lowercase characters: ```hcl +length = 20 rule "charset" { charset = "abcdefghijklmnopqrstuvwxyz" - min-chars = 1 } +``` + +Multiple rules may be specified, including multiple rules of the same type. For instance, the following +policy will generate a 20 character password with at least one lowercase letter, at least one uppercase +letter, at least one number, and at least one symbol from the set `!@#$%^&*`: + +```hcl +length = 20 rule "charset" { - charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + charset = "abcdefghijklmnopqrstuvwxyz" min-chars = 1 } rule "charset" { - charset = "ĩĪīĬĭĮįİıIJijĴĵĶķĸĹĺĻļĽľĿŀŁłŃńŅņŇňʼnŊŋŌōŎŏŐőŒ" + charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" min-chars = 1 } - -# Filling in the rest of the charset to 256 characters rule "charset" { charset = "0123456789" + min-chars = 1 } rule "charset" { - charset = " !\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~" -} -rule "charset" { - charset = "ĀāĂ㥹ĆćĈĉĊċČčĎďĐđĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħĨœŔŕŖŗŘřŚśŜŝŞşŠšŢţŤťŦŧŨũŪūŬŭŮůŰűŲųŴŵŶŷŸŹźŻżŽžſ℀℁ℂ℃℄℅℆ℇ℈℉ℊℋℌℍℎℏℐℑℒℓ℔ℕ№℗℘ℙℚℛℜℝ℞℟℠" + charset = "!@#$%^&*" + min-chars = 1 } ``` -
-[![Password Policy Performance](/img/vault-password-policy-performance.svg)](/img/vault-password-policy-performance.svg) +At least one charset must be specified for a policy to be valid. In order to generate a password, a charset +must be available to select characters from and password policies do not have a default charset. +The following policy is **NOT** valid and will be rejected: + +```hcl +length = 20 +``` + +## Configuration & Available Rules -## Available Rules +### `length` Parameter +- `length` `(int: )` - Specifies how long the generated password will be. Must be >= 4. -### `charset` +Length is **not** a rule. It is the only part of the configuration that does not adhere to the guess- +and-check approach of rules. + +### Rule `charset` Allows you to specify a minimum number of characters from a given charset. For instance: a password must have at least one lowercase letter. This rule also helps construct the charset that the password generation utilizes. In order to generate a password, a charset must be specified. @@ -244,7 +287,14 @@ order to successfully generate passwords. ~> After combining and de-duplicating charsets, the length of the charset that candidate passwords are generated from must be no longer than 256 characters. -**Example:** +#### Parameters +- `charset` `(string: )` – A string representation of the character set that this rule observes. + Accepts UTF-8 compatible strings. All characters within the string must be printable. +- `min-chars` `(int: 0)` - Specifies a minimum number of characters required from the charset specified in + this rule. For example: if `min-chars = 2`, the password must have at least 2 characters from `charset`. + + +#### Example ```hcl length = 20 @@ -282,9 +332,3 @@ rule "charset" { This policy generates 8 character passwords from the charset `abcde01234` and requires at least one character from `01234` to be in it, but does not require any characters from `abcde`. The password `04031945` may result from this policy, even though no alphabetical characters are in it. - -#### Parameters -- `charset` `(string: )` – A string representation of the character set that this rule observes. - Accepts UTF-8 compatible strings. All characters within the string must be printable. -- `min-chars` `(int: 0)` - Specifies a minimum number of characters required from the charset specified in - this rule. For example: if `min-chars = 2`, the password must have at least 2 characters from `charset`. diff --git a/website/public/img/vault-password-policy-chance.svg b/website/public/img/vault-password-policy-chance.svg new file mode 100644 index 00000000000..d708f965d36 --- /dev/null +++ b/website/public/img/vault-password-policy-chance.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/website/public/img/vault-password-policy-performance.svg b/website/public/img/vault-password-policy-performance.svg index 8cb445d32a4..4c14d99c43f 100644 --- a/website/public/img/vault-password-policy-performance.svg +++ b/website/public/img/vault-password-policy-performance.svg @@ -1,418 +1 @@ - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + \ No newline at end of file From 3e7dcc401c2df16576de0e155d4ae17d33c38977 Mon Sep 17 00:00:00 2001 From: Michael Golowka <72365+pcman312@users.noreply.github.com> Date: Fri, 29 May 2020 17:26:04 -0600 Subject: [PATCH 6/8] Improved performance graph; Wordsmithing --- website/pages/docs/concepts/password-policies.mdx | 14 ++++++++++---- .../img/vault-password-policy-performance.svg | 2 +- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/website/pages/docs/concepts/password-policies.mdx b/website/pages/docs/concepts/password-policies.mdx index c4f5293aa37..7a8e13065d2 100644 --- a/website/pages/docs/concepts/password-policies.mdx +++ b/website/pages/docs/concepts/password-policies.mdx @@ -197,11 +197,17 @@ rule "charset" { [![Password Policy Performance](/img/vault-password-policy-performance.svg)](/img/vault-password-policy-performance.svg) +As more characters are generated, the amount of time increases (as seen in the `No Minimum Characters` example). +This upward trend can be dwarfed by restricting charsets. When a password is short, the chances of a character +being selected from a subset is smaller. For instance, if you have a 1 character password from the charset +`abcde` you the chances of selecting `c` from it is 1/5. However if you have a 2 character password, the chances +are greater because you have a second chance to select `c` from the charset. + In these examples, as the length of the password increases, the amount of time to generate a password trends -down. This is because the chance of generating a given character from each of the required subsets increases -simply because the number of "tries" increases. The chance of selecting a character from each of the required -subsets increases as we select more characters. Combine this with the increasing time required to generate more -characters and you get a performance graph as shown above. +down, levels off, and then slowly increases. This is a combination of the two effects listed above: increasing +time to generate more characters vs the chances of the character subsets being selected. When a single subset is +very small (such as `!@#$`) the chances of it being selected are much smaller (4/94) than if the subset is larger +(26/94 for lowercase characters). This results in a dramatic loss of performance.
More details regarding probability for generating passwords diff --git a/website/public/img/vault-password-policy-performance.svg b/website/public/img/vault-password-policy-performance.svg index 4c14d99c43f..54ffb4210c9 100644 --- a/website/public/img/vault-password-policy-performance.svg +++ b/website/public/img/vault-password-policy-performance.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file From 1a90820656e20e6ce60600c579dca457fb021c9d Mon Sep 17 00:00:00 2001 From: Michael Golowka <72365+pcman312@users.noreply.github.com> Date: Fri, 29 May 2020 17:30:16 -0600 Subject: [PATCH 7/8] Improved probability graph --- website/public/img/vault-password-policy-chance.svg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/public/img/vault-password-policy-chance.svg b/website/public/img/vault-password-policy-chance.svg index d708f965d36..2398e19ee04 100644 --- a/website/public/img/vault-password-policy-chance.svg +++ b/website/public/img/vault-password-policy-chance.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file From fb5ee5964dace675cf3242482dffae8581370752 Mon Sep 17 00:00:00 2001 From: Michael Golowka <72365+pcman312@users.noreply.github.com> Date: Mon, 1 Jun 2020 12:36:13 -0600 Subject: [PATCH 8/8] Fix typos, grammar; wordsmithing --- .../pages/docs/concepts/password-policies.mdx | 16 +++++++++++----- .../public/img/vault-password-policy-chance.svg | 2 +- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/website/pages/docs/concepts/password-policies.mdx b/website/pages/docs/concepts/password-policies.mdx index 7a8e13065d2..aba8ecabfab 100644 --- a/website/pages/docs/concepts/password-policies.mdx +++ b/website/pages/docs/concepts/password-policies.mdx @@ -197,20 +197,21 @@ rule "charset" { [![Password Policy Performance](/img/vault-password-policy-performance.svg)](/img/vault-password-policy-performance.svg) -As more characters are generated, the amount of time increases (as seen in the `No Minimum Characters` example). +As more characters are generated, the amount of time increases (as seen in `No Minimum Characters`). This upward trend can be dwarfed by restricting charsets. When a password is short, the chances of a character being selected from a subset is smaller. For instance, if you have a 1 character password from the charset -`abcde` you the chances of selecting `c` from it is 1/5. However if you have a 2 character password, the chances -are greater because you have a second chance to select `c` from the charset. +`abcde` the chances of selecting `c` from it is 1/5. However if you have a 2 character password, the chances +of selecting `c` at least once are greater than 1/5 because you have a second chance to select `c` from +the charset. In these examples, as the length of the password increases, the amount of time to generate a password trends down, levels off, and then slowly increases. This is a combination of the two effects listed above: increasing time to generate more characters vs the chances of the character subsets being selected. When a single subset is very small (such as `!@#$`) the chances of it being selected are much smaller (4/94) than if the subset is larger -(26/94 for lowercase characters). This results in a dramatic loss of performance. +(26/94 for lowercase characters). This can result in a dramatic loss of performance.
-More details regarding probability for generating passwords +Click here for more details on password generation probabilities In the examples above, the charset being used to generate candidate passwords is 94 characters long. Randomly choosing a given character from the 94 character charset has a 1/94 chance. Choosing a single @@ -226,6 +227,11 @@ If we do this for uppercase letters as well as numbers, then we get a combined p [![Chance of Generating a Good Password - 1](/img/vault-password-policy-chance.svg)](/img/vault-password-policy-chance.svg) +It should be noted that this probability curve only applies to this specific policy. To understand the +performance characteristics of a given policy, you should run your policy with the +[`generate`](/api-docs/system/policies-password.mdx) endpoint to see how much time the policy takes to +produce passwords. +
## Password Policy Syntax diff --git a/website/public/img/vault-password-policy-chance.svg b/website/public/img/vault-password-policy-chance.svg index 2398e19ee04..6570e34f766 100644 --- a/website/public/img/vault-password-policy-chance.svg +++ b/website/public/img/vault-password-policy-chance.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file