Example #1
0
        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());
            }
        }
Example #2
0
 public bool InsertEntity(UserRBACRoleAssignmentEntity assignment)
 {
     var operation = TableOperation.InsertOrReplace(assignment);
     _table.Execute(operation);
     return true;
 }