opal-security 3.2.4 → 4.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. package/README.md +46 -61
  2. package/bin/dev +5 -5
  3. package/bin/run +2 -4
  4. package/build/commands/aws/identity.js +16 -0
  5. package/build/commands/clear-auth-config.d.ts +6 -0
  6. package/build/commands/clear-auth-config.js +22 -0
  7. package/{lib → build}/commands/groups/get.js +14 -16
  8. package/{lib → build}/commands/iam-roles/start.js +28 -30
  9. package/build/commands/kube-roles/start.js +71 -0
  10. package/{lib → build}/commands/login.d.ts +1 -0
  11. package/build/commands/login.js +379 -0
  12. package/build/commands/logout.js +22 -0
  13. package/{lib → build}/commands/postgres-instances/start.js +25 -27
  14. package/{lib → build}/commands/request/create.js +34 -36
  15. package/{lib → build}/commands/request/get.js +22 -24
  16. package/{lib → build}/commands/request/list.js +17 -19
  17. package/{lib → build}/commands/resources/get.js +15 -18
  18. package/build/commands/set-auth-config.d.ts +11 -0
  19. package/build/commands/set-auth-config.js +59 -0
  20. package/build/commands/set-custom-header.js +35 -0
  21. package/{lib → build}/commands/set-token.js +15 -17
  22. package/{lib → build}/commands/set-url.js +26 -28
  23. package/{lib → build}/commands/ssh/copyFrom.js +22 -24
  24. package/{lib → build}/commands/ssh/copyTo.js +22 -24
  25. package/{lib → build}/commands/ssh/start.js +30 -33
  26. package/build/commands/whoami.js +27 -0
  27. package/{lib → build}/graphql/fragment-masking.d.ts +1 -1
  28. package/{lib → build}/graphql/fragment-masking.js +3 -8
  29. package/{lib → build}/graphql/gql.d.ts +1 -1
  30. package/{lib → build}/graphql/gql.js +2 -5
  31. package/{lib → build}/graphql/graphql.js +256 -261
  32. package/build/graphql/index.d.ts +2 -0
  33. package/build/graphql/index.js +2 -0
  34. package/{lib → build}/handler.d.ts +1 -1
  35. package/build/handler.js +36 -0
  36. package/build/index.js +1 -0
  37. package/{lib → build}/labels.d.ts +1 -1
  38. package/build/labels.js +37 -0
  39. package/{lib → build}/lib/apollo.d.ts +2 -2
  40. package/{lib → build}/lib/apollo.js +62 -69
  41. package/build/lib/auth-success-template.d.ts +3 -0
  42. package/build/lib/auth-success-template.js +149 -0
  43. package/{lib → build}/lib/aws.js +2 -7
  44. package/{lib → build}/lib/cmd.d.ts +4 -4
  45. package/{lib → build}/lib/cmd.js +16 -20
  46. package/build/lib/config.js +46 -0
  47. package/{lib → build}/lib/credentials/index.d.ts +3 -2
  48. package/build/lib/credentials/index.js +85 -0
  49. package/{lib → build}/lib/credentials/keychain.js +4 -10
  50. package/{lib → build}/lib/credentials/localEncryption.js +12 -17
  51. package/{lib → build}/lib/flags.js +7 -10
  52. package/build/lib/local-auth-server.d.ts +5 -0
  53. package/build/lib/local-auth-server.js +69 -0
  54. package/build/lib/request/api/index.d.ts +6 -0
  55. package/build/lib/request/api/index.js +8 -0
  56. package/{lib → build}/lib/request/api/mutations/create-request.d.ts +2 -2
  57. package/{lib → build}/lib/request/api/mutations/create-request.js +3 -6
  58. package/{lib → build}/lib/request/api/queries/apps.d.ts +1 -1
  59. package/{lib → build}/lib/request/api/queries/apps.js +3 -6
  60. package/{lib → build}/lib/request/api/queries/assets.d.ts +2 -2
  61. package/{lib → build}/lib/request/api/queries/assets.js +7 -11
  62. package/{lib → build}/lib/request/api/queries/request-defaults.d.ts +2 -2
  63. package/{lib → build}/lib/request/api/queries/request-defaults.js +3 -6
  64. package/{lib → build}/lib/request/api/queries/requests.d.ts +3 -3
  65. package/{lib → build}/lib/request/api/queries/requests.js +10 -16
  66. package/{lib → build}/lib/request/api/queries/roles.d.ts +1 -1
  67. package/{lib → build}/lib/request/api/queries/roles.js +14 -18
  68. package/{lib → build}/lib/request/displays.d.ts +2 -2
  69. package/{lib → build}/lib/request/displays.js +27 -37
  70. package/{lib → build}/lib/request/prompts/apps-prompt.d.ts +1 -1
  71. package/build/lib/request/prompts/apps-prompt.js +33 -0
  72. package/{lib → build}/lib/request/prompts/asset-prompt.d.ts +1 -1
  73. package/build/lib/request/prompts/asset-prompt.js +61 -0
  74. package/{lib → build}/lib/request/prompts/duration-prompt.d.ts +1 -1
  75. package/{lib → build}/lib/request/prompts/duration-prompt.js +6 -10
  76. package/build/lib/request/prompts/index.d.ts +7 -0
  77. package/build/lib/request/prompts/index.js +8 -0
  78. package/{lib → build}/lib/request/prompts/reason-prompt.d.ts +1 -1
  79. package/{lib → build}/lib/request/prompts/reason-prompt.js +3 -6
  80. package/{lib → build}/lib/request/prompts/role-prompt.d.ts +1 -1
  81. package/{lib → build}/lib/request/prompts/role-prompt.js +9 -11
  82. package/{lib → build}/lib/request/prompts/validate-prompt.d.ts +1 -1
  83. package/{lib → build}/lib/request/prompts/validate-prompt.js +9 -13
  84. package/{lib → build}/lib/request/request-utils.d.ts +2 -2
  85. package/{lib → build}/lib/request/request-utils.js +50 -62
  86. package/{lib → build}/lib/request/types.d.ts +1 -1
  87. package/build/lib/request/types.js +12 -0
  88. package/{lib → build}/lib/resources.d.ts +1 -1
  89. package/{lib → build}/lib/resources.js +18 -23
  90. package/{lib → build}/lib/sessions.d.ts +1 -1
  91. package/{lib → build}/lib/sessions.js +57 -32
  92. package/{lib → build}/lib/ssh.d.ts +1 -1
  93. package/{lib → build}/lib/ssh.js +6 -11
  94. package/{lib → build}/lib/util.js +7 -14
  95. package/{lib → build}/types.js +98 -101
  96. package/oclif.manifest.json +115 -136
  97. package/package.json +24 -14
  98. package/lib/commands/aws/identity.js +0 -18
  99. package/lib/commands/clear-auth-provider.d.ts +0 -9
  100. package/lib/commands/clear-auth-provider.js +0 -28
  101. package/lib/commands/curl-example.d.ts +0 -8
  102. package/lib/commands/curl-example.js +0 -34
  103. package/lib/commands/kube-roles/start.js +0 -73
  104. package/lib/commands/login.js +0 -286
  105. package/lib/commands/logout.js +0 -23
  106. package/lib/commands/set-auth-provider.d.ts +0 -11
  107. package/lib/commands/set-auth-provider.js +0 -44
  108. package/lib/commands/set-custom-header.js +0 -37
  109. package/lib/commands/whoami.js +0 -34
  110. package/lib/graphql/index.d.ts +0 -2
  111. package/lib/graphql/index.js +0 -5
  112. package/lib/handler.js +0 -41
  113. package/lib/index.js +0 -5
  114. package/lib/labels.js +0 -40
  115. package/lib/lib/config.js +0 -54
  116. package/lib/lib/credentials/index.js +0 -67
  117. package/lib/lib/request/api/index.d.ts +0 -6
  118. package/lib/lib/request/api/index.js +0 -20
  119. package/lib/lib/request/prompts/apps-prompt.js +0 -35
  120. package/lib/lib/request/prompts/asset-prompt.js +0 -65
  121. package/lib/lib/request/prompts/index.d.ts +0 -7
  122. package/lib/lib/request/prompts/index.js +0 -19
  123. package/lib/lib/request/types.js +0 -15
  124. /package/{lib → build}/commands/aws/identity.d.ts +0 -0
  125. /package/{lib → build}/commands/groups/get.d.ts +0 -0
  126. /package/{lib → build}/commands/iam-roles/start.d.ts +0 -0
  127. /package/{lib → build}/commands/kube-roles/start.d.ts +0 -0
  128. /package/{lib → build}/commands/logout.d.ts +0 -0
  129. /package/{lib → build}/commands/postgres-instances/start.d.ts +0 -0
  130. /package/{lib → build}/commands/request/create.d.ts +0 -0
  131. /package/{lib → build}/commands/request/get.d.ts +0 -0
  132. /package/{lib → build}/commands/request/list.d.ts +0 -0
  133. /package/{lib → build}/commands/resources/get.d.ts +0 -0
  134. /package/{lib → build}/commands/set-custom-header.d.ts +0 -0
  135. /package/{lib → build}/commands/set-token.d.ts +0 -0
  136. /package/{lib → build}/commands/set-url.d.ts +0 -0
  137. /package/{lib → build}/commands/ssh/copyFrom.d.ts +0 -0
  138. /package/{lib → build}/commands/ssh/copyTo.d.ts +0 -0
  139. /package/{lib → build}/commands/ssh/start.d.ts +0 -0
  140. /package/{lib → build}/commands/whoami.d.ts +0 -0
  141. /package/{lib → build}/graphql/graphql.d.ts +0 -0
  142. /package/{lib → build}/index.d.ts +0 -0
  143. /package/{lib → build}/lib/aws.d.ts +0 -0
  144. /package/{lib → build}/lib/config.d.ts +0 -0
  145. /package/{lib → build}/lib/credentials/keychain.d.ts +0 -0
  146. /package/{lib → build}/lib/credentials/localEncryption.d.ts +0 -0
  147. /package/{lib → build}/lib/flags.d.ts +0 -0
  148. /package/{lib → build}/lib/util.d.ts +0 -0
  149. /package/{lib → build}/types.d.ts +0 -0
@@ -1,67 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.removeOpalCredentials = exports.getOpalCredentials = exports.setOpalCredentials = exports.SecretType = void 0;
4
- const config_1 = require("../config");
5
- const keychain_1 = require("./keychain");
6
- const localEncryption_1 = require("./localEncryption");
7
- var SecretType;
8
- (function (SecretType) {
9
- SecretType["Cookie"] = "COOKIE";
10
- SecretType["ApiToken"] = "API_TOKEN";
11
- })(SecretType || (exports.SecretType = SecretType = {}));
12
- const setOpalCredentials = async (command, email, organizationID, clientIDCandidate, secret, secretType, organizationName) => {
13
- const givenEmail = email || "email-unset";
14
- const configData = (0, config_1.getOrCreateConfigData)(command.config.configDir);
15
- configData.creds = {
16
- clientIDCandidate,
17
- email,
18
- organizationID,
19
- organizationName,
20
- secretType,
21
- };
22
- (0, config_1.writeConfigData)(command.config.configDir, configData);
23
- if (process.platform === "darwin") {
24
- await (0, keychain_1.setSecretInKeychain)(givenEmail, secret);
25
- }
26
- else {
27
- await (0, localEncryption_1.setSecretInConfig)(command, configData, secret);
28
- }
29
- };
30
- exports.setOpalCredentials = setOpalCredentials;
31
- const getOpalCredentials = async (command, includeAuthSecret = true) => {
32
- var _a, _b;
33
- const creds = (_b = (_a = (0, config_1.getOrCreateConfigData)(command.config.configDir)) === null || _a === void 0 ? void 0 : _a.creds) !== null && _b !== void 0 ? _b : {};
34
- if (!includeAuthSecret) {
35
- return creds;
36
- }
37
- let secret = null;
38
- if (process.platform === "darwin") {
39
- secret = await (0, keychain_1.getSecretFromKeychain)((creds === null || creds === void 0 ? void 0 : creds.email) || "email-unset");
40
- }
41
- else {
42
- secret = await (0, localEncryption_1.getSecretFromConfig)(creds);
43
- }
44
- if (secret) {
45
- creds.secret = secret;
46
- // This is a fallback for users with stored credentials from before we converted to session auth with the CLITokenExchange mutation
47
- // It will allow them to continue authenticating with an access token in an Authorization header, which will work until we remove support for that
48
- if (!creds.secretType) {
49
- creds.secretType = SecretType.ApiToken;
50
- }
51
- }
52
- return creds;
53
- };
54
- exports.getOpalCredentials = getOpalCredentials;
55
- const removeOpalCredentials = async (command) => {
56
- var _a;
57
- const configData = (0, config_1.getOrCreateConfigData)(command.config.configDir);
58
- const email = ((_a = configData === null || configData === void 0 ? void 0 : configData.creds) === null || _a === void 0 ? void 0 : _a.email) || "email-unset";
59
- // On linux, the access token is stored encrypted in configData.creds, so this effectively removes it
60
- configData.creds = {};
61
- (0, config_1.writeConfigData)(command.config.configDir, configData);
62
- // but on OSX, we need an extra step to delete the token from the keychain
63
- if (process.platform === "darwin") {
64
- await (0, keychain_1.deleteSecretFromKeychain)(email);
65
- }
66
- };
67
- exports.removeOpalCredentials = removeOpalCredentials;
@@ -1,6 +0,0 @@
1
- export { queryRequestableApps } from "./queries/apps";
2
- export { queryRequestableAssets, queryCatalogItems } from "./queries/assets";
3
- export { queryAssetRoles, queryAssociatedItems } from "./queries/roles";
4
- export { queryRequestDefaults } from "./queries/request-defaults";
5
- export { queryRequest, queryRequests } from "./queries/requests";
6
- export { createRequest } from "./mutations/create-request";
@@ -1,20 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createRequest = exports.queryRequests = exports.queryRequest = exports.queryRequestDefaults = exports.queryAssociatedItems = exports.queryAssetRoles = exports.queryCatalogItems = exports.queryRequestableAssets = exports.queryRequestableApps = void 0;
4
- // Query exports
5
- var apps_1 = require("./queries/apps");
6
- Object.defineProperty(exports, "queryRequestableApps", { enumerable: true, get: function () { return apps_1.queryRequestableApps; } });
7
- var assets_1 = require("./queries/assets");
8
- Object.defineProperty(exports, "queryRequestableAssets", { enumerable: true, get: function () { return assets_1.queryRequestableAssets; } });
9
- Object.defineProperty(exports, "queryCatalogItems", { enumerable: true, get: function () { return assets_1.queryCatalogItems; } });
10
- var roles_1 = require("./queries/roles");
11
- Object.defineProperty(exports, "queryAssetRoles", { enumerable: true, get: function () { return roles_1.queryAssetRoles; } });
12
- Object.defineProperty(exports, "queryAssociatedItems", { enumerable: true, get: function () { return roles_1.queryAssociatedItems; } });
13
- var request_defaults_1 = require("./queries/request-defaults");
14
- Object.defineProperty(exports, "queryRequestDefaults", { enumerable: true, get: function () { return request_defaults_1.queryRequestDefaults; } });
15
- var requests_1 = require("./queries/requests");
16
- Object.defineProperty(exports, "queryRequest", { enumerable: true, get: function () { return requests_1.queryRequest; } });
17
- Object.defineProperty(exports, "queryRequests", { enumerable: true, get: function () { return requests_1.queryRequests; } });
18
- // Mutation exports
19
- var create_request_1 = require("./mutations/create-request");
20
- Object.defineProperty(exports, "createRequest", { enumerable: true, get: function () { return create_request_1.createRequest; } });
@@ -1,35 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.selectRequestableItems = selectRequestableItems;
4
- const _1 = require(".");
5
- const api_1 = require("../api");
6
- const { AutoComplete } = require("enquirer");
7
- async function selectRequestableItems(cmd, client, requestMap) {
8
- const initial = (await (0, api_1.queryRequestableApps)(cmd, client, "")) || [];
9
- const appPrompt = new AutoComplete({
10
- name: "App",
11
- message: "Select an app",
12
- hint: _1.selectInstructions,
13
- limit: 15,
14
- choices: initial,
15
- async suggest(input) {
16
- const filteredChoices = await (0, api_1.queryRequestableApps)(cmd, client, input || "");
17
- return filteredChoices || initial;
18
- },
19
- });
20
- const App = await appPrompt.run();
21
- // Set the app in the requestMap and call choose assets step
22
- if (!(App.id in requestMap)) {
23
- requestMap[App.id] = {
24
- appId: App.id,
25
- appType: App.type,
26
- appName: App.name,
27
- assets: {},
28
- };
29
- }
30
- if (App.type === "OKTA_APP" || App.type === "AZURE_ENTERPRISE_APP") {
31
- await (0, _1.chooseOktaAzureRoles)(cmd, client, App, requestMap);
32
- return;
33
- }
34
- await (0, _1.chooseAssets)(cmd, client, App.id, requestMap);
35
- }
@@ -1,65 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.chooseOktaAzureRoles = chooseOktaAzureRoles;
4
- exports.chooseAssets = chooseAssets;
5
- const _1 = require(".");
6
- const api_1 = require("../api");
7
- const types_1 = require("../types");
8
- const { AutoComplete } = require("enquirer");
9
- async function chooseOktaAzureRoles(cmd, client, app, requestMap) {
10
- const associatedItems = (await (0, api_1.queryAssociatedItems)(cmd, client, app.id, "")) || [];
11
- const rolePrompt = new AutoComplete({
12
- name: "Roles",
13
- message: `Select a role for ${app.name}:`,
14
- hint: _1.selectInstructions,
15
- limit: 15,
16
- choices: associatedItems,
17
- async suggest(input) {
18
- if (!input)
19
- return associatedItems;
20
- const filteredChoices = await (0, api_1.queryAssociatedItems)(cmd, client, app.id, input);
21
- return filteredChoices || associatedItems;
22
- },
23
- });
24
- const selectedRole = await rolePrompt.run();
25
- const entry = requestMap[app.id];
26
- if (!(selectedRole.id in entry.assets)) {
27
- entry.assets[selectedRole.id] = {
28
- assetId: selectedRole.id,
29
- assetName: selectedRole.name,
30
- type: (0, types_1.entityTypeFromString)(selectedRole.type),
31
- roles: {},
32
- };
33
- }
34
- }
35
- async function chooseAssets(cmd, client, appId, requestMap) {
36
- const initial = (await (0, api_1.queryRequestableAssets)(cmd, client, appId, "")) || [];
37
- const assetPrompt = new AutoComplete({
38
- name: "Assets",
39
- message: "Select an asset to request:",
40
- hint: _1.selectInstructions,
41
- limit: 15,
42
- async suggest(input, choices) {
43
- if (!input) {
44
- return initial;
45
- }
46
- const filteredChoices = await (0, api_1.queryRequestableAssets)(cmd, client, appId, input);
47
- return filteredChoices || initial;
48
- },
49
- choices: initial,
50
- });
51
- const selectedAsset = await assetPrompt.run();
52
- const entry = requestMap[appId];
53
- if (entry === undefined) {
54
- throw new Error(`Error formatting app ${appId} in request`);
55
- }
56
- if (!(selectedAsset.id in entry.assets)) {
57
- entry.assets[selectedAsset.id] = {
58
- assetId: selectedAsset.id,
59
- assetName: selectedAsset.name,
60
- type: selectedAsset.type,
61
- roles: {},
62
- };
63
- }
64
- await (0, _1.chooseRoles)(cmd, client, appId, selectedAsset.id, requestMap);
65
- }
@@ -1,7 +0,0 @@
1
- export { selectRequestableItems } from "./apps-prompt";
2
- export { chooseOktaAzureRoles, chooseAssets } from "./asset-prompt";
3
- export { chooseRoles } from "./role-prompt";
4
- export { promptForReason } from "./reason-prompt";
5
- export { promptForDuration } from "./duration-prompt";
6
- export { doneSelectingAssets, promptRequestSubmission, } from "./validate-prompt";
7
- export declare const selectInstructions: string;
@@ -1,19 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.selectInstructions = exports.promptRequestSubmission = exports.doneSelectingAssets = exports.promptForDuration = exports.promptForReason = exports.chooseRoles = exports.chooseAssets = exports.chooseOktaAzureRoles = exports.selectRequestableItems = void 0;
4
- const chalk_1 = require("chalk");
5
- var apps_prompt_1 = require("./apps-prompt");
6
- Object.defineProperty(exports, "selectRequestableItems", { enumerable: true, get: function () { return apps_prompt_1.selectRequestableItems; } });
7
- var asset_prompt_1 = require("./asset-prompt");
8
- Object.defineProperty(exports, "chooseOktaAzureRoles", { enumerable: true, get: function () { return asset_prompt_1.chooseOktaAzureRoles; } });
9
- Object.defineProperty(exports, "chooseAssets", { enumerable: true, get: function () { return asset_prompt_1.chooseAssets; } });
10
- var role_prompt_1 = require("./role-prompt");
11
- Object.defineProperty(exports, "chooseRoles", { enumerable: true, get: function () { return role_prompt_1.chooseRoles; } });
12
- var reason_prompt_1 = require("./reason-prompt");
13
- Object.defineProperty(exports, "promptForReason", { enumerable: true, get: function () { return reason_prompt_1.promptForReason; } });
14
- var duration_prompt_1 = require("./duration-prompt");
15
- Object.defineProperty(exports, "promptForDuration", { enumerable: true, get: function () { return duration_prompt_1.promptForDuration; } });
16
- var validate_prompt_1 = require("./validate-prompt");
17
- Object.defineProperty(exports, "doneSelectingAssets", { enumerable: true, get: function () { return validate_prompt_1.doneSelectingAssets; } });
18
- Object.defineProperty(exports, "promptRequestSubmission", { enumerable: true, get: function () { return validate_prompt_1.promptRequestSubmission; } });
19
- exports.selectInstructions = chalk_1.default.dim("[↑↓] Navigate · [Enter] Select · Type to filter");
@@ -1,15 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.entityTypeFromString = entityTypeFromString;
4
- const graphql_1 = require("../../graphql/graphql");
5
- function entityTypeFromString(str) {
6
- const capStr = str === null || str === void 0 ? void 0 : str.toLocaleUpperCase();
7
- if (capStr === "RESOURCE") {
8
- return graphql_1.EntityType.Resource;
9
- }
10
- if (capStr === "GROUP") {
11
- return graphql_1.EntityType.Group;
12
- }
13
- // if type unknown, default to resource
14
- return graphql_1.EntityType.Resource;
15
- }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes