azure-cli
Version:
Microsoft Azure Cross Platform Command Line tool
300 lines (160 loc) • 14.9 kB
JavaScript
/*** Generated by streamline 0.10.17 (callbacks) - DO NOT EDIT ***/ "use strict"; var __rt=require('streamline/lib/callbacks/runtime').runtime(__filename, false),__func=__rt.__func,__cb=__rt.__cb,__catch=__rt.__catch,__tryCatch=__rt.__tryCatch,__forIn=__rt.__forIn; var __ = require("underscore");
var utils = require("../../../util/utils");
var roleUtils = require("./roleUtils");
var $ = utils.getLocaleString;
exports.processInsightsResults = function exports_processInsightsResults__1(cli, log, insightsResults, subscription, graphClient, authzClient, _) { var startEvents, endEvents, offlineEvents, i, outputData, principalDetailsCache, roleDefinitionCache, scopeForRoleDefinitions, filterParameters, result, j, se, out, endEvent, startEvent, scope, messageBody, properties, principalId, index, resourceDetails, roleId, oe, outOffline, offlineEvent; var __frame = { name: "exports_processInsightsResults__1", line: 25 }; return __func(_, this, arguments, exports_processInsightsResults__1, 6, __frame, function __$exports_processInsightsResults__1() {
startEvents = { }; endEvents = { }; offlineEvents = { };
for (i = 0; (i < insightsResults.length); i++) {
if ((insightsResults[i]["httpRequest"] && utils.ignoreCaseEquals((insightsResults[i]["status"]).value, "Started"))) {
startEvents[insightsResults[i]["operationId"]] = insightsResults[i]; } else {
if ((insightsResults[i]["httpRequest"] && !utils.ignoreCaseEquals((insightsResults[i]["status"]).value, "Started"))) {
endEvents[insightsResults[i]["operationId"]] = insightsResults[i]; } else {
if (((insightsResults[i]["eventName"] && insightsResults[i]["eventName"].value) && (insightsResults[i]["eventName"].value.toLowerCase().indexOf("classicadministrators") > 0))) {
offlineEvents[insightsResults[i]["operationId"]] = insightsResults[i]; } ; } ; } ; };
outputData = [];
principalDetailsCache = { };
roleDefinitionCache = { };
scopeForRoleDefinitions = ("/subscriptions/" + subscription.id);
filterParameters = { atScopeAndBelow: true };
return authzClient.roleDefinitions.list(scopeForRoleDefinitions, filterParameters, __cb(_, __frame, 25, 43, function ___(__0, __3) { result = __3;
for (j = 0; (j < result.roleDefinitions.length); j++) {
result.roleDefinitions[j].id = roleUtils.getRoleDefinitionName(result.roleDefinitions[j].id);
roleDefinitionCache[result.roleDefinitions[j]["id"]] = result.roleDefinitions[j]; };
var __1 = __forIn(startEvents); var __2 = 0; return (function ___(__break) { var __more; var __loop = __cb(_, __frame, 0, 0, function __$exports_processInsightsResults__1() { __more = false; var __5 = (__2 < __1.length); if (__5) { se = __1[__2++];
out = { }; return (function __$exports_processInsightsResults__1(__then) {
if (((((endEvents[se] && endEvents[se]["operationName"]) && endEvents[se]["operationName"].value) && utils.stringStartsWith(endEvents[se]["operationName"].value, "Microsoft.Authorization/RoleAssignments", true)) && utils.ignoreCaseEquals(endEvents[se]["status"].value, "Succeeded"))) {
endEvent = endEvents[se];
startEvent = startEvents[se];
out["Timestamp"] = endEvent["eventTimestamp"];
out["Caller"] = startEvent["caller"]; return (function __$exports_processInsightsResults__1(__then) {
if (((startEvent["httpRequest"] && startEvent["httpRequest"]["method"]) && utils.ignoreCaseEquals(startEvent["httpRequest"]["method"], "PUT"))) {
out["Action"] = "Granted"; return (function ___(__then) { (function ___(_) { __tryCatch(_, function __$exports_processInsightsResults__1() {
messageBody = JSON.parse(startEvent["properties"]["requestbody"]); __then(); }); })(function ___(ex, __result) { __catch(function __$exports_processInsightsResults__1() { if (ex) { __then(); } else { _(null, __result); } ; }, _); }); })(function ___() { __tryCatch(_, function __$exports_processInsightsResults__1() {
scope = startEvent.authorization.scope; __then(); }); }); } else { return (function __$exports_processInsightsResults__1(__then) {
if (((startEvent["httpRequest"] && startEvent["httpRequest"]["method"]) && utils.ignoreCaseEquals(startEvent["httpRequest"]["method"], "DELETE"))) {
out["Action"] = "Revoked"; return (function ___(__then) { (function ___(_) { __tryCatch(_, function __$exports_processInsightsResults__1() {
messageBody = JSON.parse(endEvent["properties"]["responseBody"]); __then(); }); })(function ___(ex, __result) { __catch(function __$exports_processInsightsResults__1() { if (ex) { __then(); } else { _(null, __result); } ; }, _); }); })(function ___() { __tryCatch(_, __then); }); } else { __then(); } ; })(__then); } ; })(function __$exports_processInsightsResults__1() { return (function __$exports_processInsightsResults__1(__then) {
if (messageBody) {
messageBody = toCamelCaseObj(messageBody);
properties = messageBody["properties"];
properties = toCamelCaseObj(properties); return (function __$exports_processInsightsResults__1(__then) {
if (properties) {
principalId = properties["principalId"];
out["PrincipalId"] = principalId; return (function __$exports_processInsightsResults__1(__then) {
if (principalId) {
return getPrincipalDetails(principalId, principalDetailsCache, graphClient, __cb(_, __frame, 75, 12, function __$exports_processInsightsResults__1() {
if ((principalDetailsCache && principalDetailsCache[principalId])) {
out["PrincipalName"] = principalDetailsCache[principalId]["Name"];
out["PrincipalType"] = principalDetailsCache[principalId]["Type"]; } ; __then(); }, true)); } else { __then(); } ; })(__then); } else { __then(); } ; })(function __$exports_processInsightsResults__1() {
if ((!scope && properties)) {
scope = properties["scope"]; } ;
if (scope) {
index = scope.toLowerCase().indexOf("/providers/microsoft.authorization");
if ((index > 0)) {
scope = scope.substring(0, index); } ;
out["Scope"] = scope;
resourceDetails = { };
resourceDetails = getResourceDetails(out["Scope"]);
if (resourceDetails) {
out["ScopeName"] = resourceDetails["Name"];
out["ScopeType"] = resourceDetails["Type"]; } ; } ;
if (properties) {
out["RoleDefinitionId"] = roleUtils.getRoleDefinitionName(properties["roleDefinitionId"]);
roleId = out["RoleDefinitionId"];
if (roleId) {
if (roleDefinitionCache[roleId]) {
out["RoleName"] = roleDefinitionCache[roleId].properties.roleName; }
else {
out["RoleName"] = ""; } ; } ; } ; __then(); }); } else { __then(); } ; })(function __$exports_processInsightsResults__1() {
outputData.push(out); __then(); }); }); } else { __then(); } ; })(function __$exports_processInsightsResults__1() { while (__more) { __loop(); }; __more = true; }); } else { __break(); } ; }); do { __loop(); } while (__more); __more = true; })(function __$exports_processInsightsResults__1() {
for (oe in offlineEvents) {
outOffline = { };
offlineEvent = offlineEvents[oe];
if ((((((offlineEvent["status"] && offlineEvent["status"].value) && utils.ignoreCaseEquals(offlineEvent["status"].value, "Succeeded")) && offlineEvent["operationName"]) && offlineEvent["operationName"].value) && utils.stringStartsWith(offlineEvent["operationName"].value, "Microsoft.Authorization/ClassicAdministrators", true))) {
outOffline["Timestamp"] = offlineEvent["eventTimestamp"];
outOffline["Caller"] = "Subscription Admin";
if (utils.ignoreCaseEquals(offlineEvent["operationName"].value, "Microsoft.Authorization/ClassicAdministrators/write")) {
outOffline["Action"] = "Granted"; } else {
if (utils.ignoreCaseEquals(offlineEvent["operationName"].value, "Microsoft.Authorization/ClassicAdministrators/delete")) {
outOffline["Action"] = "Revoked"; } ; } ;
outOffline["RoleDefinitionId"] = null;
outOffline["PrincipalId"] = null;
outOffline["PrincipalType"] = "User";
outOffline["Scope"] = ("/subscriptions/" + subscription.id);
outOffline["ScopeType"] = "Subscription";
outOffline["ScopeName"] = subscription.id;
if (offlineEvent["properties"]) {
outOffline["PrincipalName"] = offlineEvent["properties"]["adminEmail"];
outOffline["RoleName"] = ("Classic " + offlineEvent["properties"]["adminType"]); } ;
outputData.push(outOffline); } ; };
cli.interaction.formatOutput(outputData, function(data) {
if ((data.length === 0)) {
log.info($("No records were found in the specified search interval")); }
else {
data.sort(function(a, b) {
return (new Date(a["Timestamp"]) - new Date(b["Timestamp"])); });
for (var k = 0; (k < data.length); k++) {
displayRecord(data[k], log); }; } ; }); _(); }); }, true)); });};
function toCamelCaseObj(obj) {
var key, destKey, value;
var camelCasedObj = { };
if ((obj && (typeof obj === "object"))) {
for (key in obj) {
if (obj.hasOwnProperty(key)) {
destKey = ((key.charAt(0).toLowerCase() + key.substring(1))).toString();
value = obj[key];
camelCasedObj[destKey] = value; } ; } };
return camelCasedObj;};
function displayRecord(record, log) {
log.data($("Timestamp :"), record["Timestamp"]);
log.data($("Caller :"), record["Caller"]);
log.data($("Action :"), record["Action"]);
log.data($("PrincipalId :"), record["PrincipalId"]);
log.data($("PrincipalName :"), record["PrincipalName"]);
log.data($("PrincipalType :"), record["PrincipalType"]);
log.data($("Scope :"), record["Scope"]);
log.data($("ScopeType :"), record["ScopeType"]);
log.data($("ScopeName :"), record["ScopeName"]);
log.data($("RoleDefinitionId :"), record["RoleDefinitionId"]);
log.data($("RoleName :"), record["RoleName"]);
log.data("");};
function getPrincipalDetails(principalId, principalDetailsCache, graphClient, _) { var principalDetails, user, group, sp; var __frame = { name: "getPrincipalDetails", line: 225 }; return __func(_, this, arguments, getPrincipalDetails, 3, __frame, function __$getPrincipalDetails() {
if ((principalId in principalDetailsCache)) {
return _(null, principalDetailsCache[principalId.toString()]); } ;
principalDetails = { }; return (function ___(__then) { (function ___(_) { __tryCatch(_, function __$getPrincipalDetails() {
return graphClient.users.get(principalId, __cb(_, __frame, 9, 29, function ___(__0, __1) { user = __1; __then(); }, true)); }); })(function ___(ex, __result) { __catch(function __$getPrincipalDetails() { if (ex) {
if ((ex.statusCode !== 404)) {
return _(ex); } ; __then(); } else { _(null, __result); } ; }, _); }); })(function ___() { __tryCatch(_, function __$getPrincipalDetails() { return (function __$getPrincipalDetails(__then) {
if (user) {
principalDetails["Name"] = user.displayName;
principalDetails["Type"] = "User";
principalDetailsCache[principalId] = principalDetails; __then(); } else { return (function ___(__then) { (function ___(_) { __tryCatch(_, function __$getPrincipalDetails() {
return graphClient.groups.get(principalId, __cb(_, __frame, 23, 33, function ___(__0, __2) { group = __2; __then(); }, true)); }); })(function ___(ex, __result) { __catch(function __$getPrincipalDetails() { if (ex) {
if ((ex.statusCode !== 404)) {
return _(ex); } ; __then(); } else { _(null, __result); } ; }, _); }); })(function ___() { __tryCatch(_, function __$getPrincipalDetails() { return (function __$getPrincipalDetails(__then) {
if (group) {
principalDetails["Name"] = group.displayName;
principalDetails["Type"] = "Group";
principalDetailsCache[principalId] = principalDetails; __then(); } else { return (function ___(__then) { (function ___(_) { __tryCatch(_, function __$getPrincipalDetails() {
return graphClient.servicePrincipals.get(principalId, __cb(_, __frame, 37, 43, function ___(__0, __3) { sp = __3; __then(); }, true)); }); })(function ___(ex, __result) { __catch(function __$getPrincipalDetails() { if (ex) {
if ((ex.statusCode !== 404)) {
return _(ex); } ; __then(); } else { _(null, __result); } ; }, _); }); })(function ___() { __tryCatch(_, function __$getPrincipalDetails() {
if (sp) {
principalDetails["Name"] = sp.displayName;
principalDetails["Type"] = "Service Principal";
principalDetailsCache[principalId] = principalDetails; } ; __then(); }); }); } ; })(__then); }); }); } ; })(_); }); }); });};
function getResourceDetails(scope) {
var resourceDetails = { };
var scopeParts = scope.split("/").filter(function(r) {
return !__.isEmpty(r); });
var len = scopeParts.length;
if ((((len > 0) && (len <= 2)) && (scope.toLowerCase().indexOf("subscriptions") > 0))) {
resourceDetails["Type"] = "Subscription";
resourceDetails["Name"] = scopeParts[1]; }
else if ((((len > 0) && (len <= 4)) && (scope.toLowerCase().indexOf("resourcegroups") > 0))) {
resourceDetails["Type"] = "Resource Group";
resourceDetails["Name"] = scopeParts[3]; }
else if (((len >= 6) && (scope.toLowerCase().indexOf("providers") > 0))) {
resourceDetails["Type"] = "Resource";
resourceDetails["Name"] = scopeParts[(len - 1)]; } ;
return resourceDetails;};