public async Task<IHttpActionResult> GetRolesByResGroupIDAsync(string resGroupID) { string groupName = resGroupID.Split(';')[0]; string groupID = resGroupID.Split(';')[1]; List<ResourcePageView> list = new List<ResourcePageView>(); groupID = groupID.Replace("/", "&"); //RetrieveRMResourcesByGroupID var operation = new TableDal(ConfigurationManager.AppSettings["storageConnection"], TableNames.RMResourceGroups); var result = operation.RetrieveRMGroup(groupName); foreach (RMResourceGroupEntiry resGroupEntiry in result) { operation = new TableDal(ConfigurationManager.AppSettings["storageConnection"], TableNames.RGRBACRoleAssignments); var RGBACRole_result = operation.RetrieveRGRBACRoleAssignmentByGroupID(groupID); foreach (RGRBACRoleAssignmentEntity entry in RGBACRole_result) { var role_operation = new TableDal(ConfigurationManager.AppSettings["storageConnection"], TableNames.RBACRoles); var role_result = role_operation.RetrieveRbacRoleByID(entry.RowKey); RBACRoleEntity rbacRole = new RBACRoleEntity(); foreach(RBACRoleEntity _temp in role_result) { rbacRole = _temp; break; } operation = new TableDal(ConfigurationManager.AppSettings["storageConnection"], TableNames.UserRBACRoleAssignments); var userRBRole_result = operation.RetrieveUsersByRbacRoleId(entry.RowKey); foreach (UserRBACRoleAssignmentEntity userRBACRoleAssignmentEntity in userRBRole_result) { ResourcePageView view = new ResourcePageView(); view.ResourceGroupName = resGroupEntiry.PartitionKey; view.GroupID = resGroupEntiry.resourceGroupID; view.UserID = "External AAD User"; view.UserPrincipleName = "External AAD User"; view.Location = resGroupEntiry.RowKey; view.RoleName = rbacRole.RowKey; view.RoleID = rbacRole.PartitionKey; var user_operation= new TableDal(ConfigurationManager.AppSettings["storageConnection"],TableNames.AADUsers); var user_result = user_operation.RetrieveUserByUserId(userRBACRoleAssignmentEntity.PartitionKey); foreach(UserEntity userEntity in user_result) { view.UserID = userEntity.PartitionKey; view.UserPrincipleName = userEntity.RowKey; break; } list.Add(view); } } } return CreateSuccessResult(list); }
static void RetrieveRBACRoles() { Console.WriteLine("Start to sync RBAC roles ..."); string _subscriptionId = ConfigurationSettings.AppSettings["azureSubscriptionID"]; var client = new HttpClient(); var header = AuthenticationHelper.GetAuthorizationHeader(); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", header); try { var myTask = client.GetStringAsync( String.Format( "https://management.chinacloudapi.cn/subscriptions/{0}/providers/Microsoft.Authorization/roleDefinitions?api-version=2015-07-01&filter=atScopeAndBelow()", _subscriptionId)); var result = myTask.Result; JObject jObj = JObject.Parse(result); JToken jTk = jObj.GetValue("value").First; while (jTk != null) { var rbacRole = new RBACRoleEntity(jTk["properties"]["roleName"].ToString(), jTk["name"].ToString()); rbacRole.RoleID = jTk["id"].ToString(); rbacRole.TypeProperty = jTk["properties"]["type"].ToString(); rbacRole.Description = jTk["properties"]["description"].ToString(); rbacRole.AssignableScopes = jTk["properties"]["assignableScopes"].ToString(); rbacRole.CreatedOn = jTk["properties"]["createdOn"].ToString(); rbacRole.UpdatedOn = jTk["properties"]["updatedOn"].ToString(); rbacRole.CreatedBy = jTk["properties"]["createdBy"].ToString(); rbacRole.UpdatedBy = jTk["properties"]["updatedBy"].ToString(); rbacRole.Type = jTk["type"].ToString(); rbacRole.Permissions = jTk["properties"]["permissions"].ToString(); rbacRoleTableOper.InsertEntity(rbacRole); jTk = jTk.Next; } } catch (Exception ex) { Console.WriteLine(ex.ToString()); } }
public bool InsertEntity(RBACRoleEntity rbacRole) { var operation = TableOperation.InsertOrReplace(rbacRole); _table.Execute(operation); return true; }