code: def update_sdb(self, sdb_id, owner=None, description=None, user_group_permissions=None,
                     iam_principal_permissions=None):
          
          # Grab current data
          old_data = self.get_sdb_by_id(sdb_id)
  
          # Assemble information to update
          temp_data = {}
          keys = ('owner', 'description', 'iam_principal_permissions', 'user_group_permissions')
          for k in keys:
              if k in old_data:
                  temp_data[k] = old_data[k]
          if owner is not None:
              temp_data["owner"] = owner
          if description is not None:
              temp_data["description"] = description
          if user_group_permissions is not None and len(user_group_permissions) > 0:
              temp_data["user_group_permissions"] = user_group_permissions
          if iam_principal_permissions is not None and len(iam_principal_permissions) > 0:
              temp_data["iam_principal_permissions"] = iam_principal_permissions
  
          data = json.encoder.JSONEncoder().encode(temp_data)
          sdb_resp = put_with_retry(self.cerberus_url + '/v2/safe-deposit-box/' + sdb_id, data=str(data),
                                  headers=self.HEADERS)
  
          throw_if_bad_response(sdb_resp)
          return sdb_resp.json()
docs: Update a safe deposit box.
  
          Keyword arguments:
  
              owner (string) -- AD group that owns the safe deposit box
              description (string) -- Description of the safe deposit box
              user_group_permissions (list) -- list of dictionaries containing the key name and maybe role_id
              iam_principal_permissions (list) -- list of dictionaries containing the key name iam_principal_arn
              and role_id