static void ParseRBACRoleAssignments() { Console.WriteLine("Start to sync RBAC assignments ..."); 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/roleAssignments?api-version=2015-07-01&filter=atScope()", _subscriptionId)); var result = myTask.Result; JObject jObj = JObject.Parse(result); JToken jTk = jObj.GetValue("value").First; while (jTk != null) { string roleDefinitionId = jTk["properties"]["roleDefinitionId"].ToString(); // /subscriptions/-----/providers/.../roleDefinitions/rolebackendidname string[] items = roleDefinitionId.Split('/'); string roleBackendIDName = items[items.Count() - 1]; string resourceGroupID = jTk["properties"]["scope"].ToString().Replace('/', '&'); var rbacRoleAssignment = new UserRBACRoleAssignmentEntity(jTk["properties"]["principalId"].ToString(), roleBackendIDName); rbacRoleAssignment.RoleDefinitionId = roleDefinitionId; rbacRoleAssignment.Scope = jTk["properties"]["scope"].ToString(); rbacRoleAssignment.CreatedOn = jTk["properties"]["createdOn"].ToString(); rbacRoleAssignment.UpdatedOn = jTk["properties"]["updatedOn"].ToString(); rbacRoleAssignment.CreatedBy = jTk["properties"]["createdBy"].ToString(); rbacRoleAssignment.UpdatedBy = jTk["properties"]["updatedBy"].ToString(); rbacRoleAssignment.AssignmentID = jTk["id"].ToString(); rbacRoleAssignment.Type = jTk["type"].ToString(); rbacRoleAssignment.AssignmentName = jTk["name"].ToString(); rbacRoleAssignmentTableOper.InsertEntity(rbacRoleAssignment); var rgRoleAssignment = new RGRBACRoleAssignmentEntity(resourceGroupID,roleBackendIDName); rgRoleAssignment.RoleDefinitionId = roleDefinitionId; rgRoleAssignment.UserObjectID = jTk["properties"]["principalId"].ToString(); rgRoleAssignment.Scope = jTk["properties"]["scope"].ToString(); rgRoleAssignment.CreatedOn = jTk["properties"]["createdOn"].ToString(); rgRoleAssignment.UpdatedOn = jTk["properties"]["updatedOn"].ToString(); rgRoleAssignment.CreatedBy = jTk["properties"]["createdBy"].ToString(); rgRoleAssignment.UpdatedBy = jTk["properties"]["updatedBy"].ToString(); rgRoleAssignment.AssignmentID = jTk["id"].ToString(); rgRoleAssignment.Type = jTk["type"].ToString(); rgRoleAssignment.AssignmentName = jTk["name"].ToString(); rgRoleAssignmentTableOper.InsertEntity(rgRoleAssignment); jTk = jTk.Next; } } catch (Exception ex) { Console.WriteLine(ex.ToString()); } }
public bool InsertEntity(RGRBACRoleAssignmentEntity assignment) { var operation = TableOperation.InsertOrReplace(assignment); _table.Execute(operation); return true; }