code: func GetStringMapValue(mapVal, keyVal interface{}) (interface{}, error) {
  	key, ok := keyVal.(string)
  	if !ok {
  		return nil, trace.BadParameter("only string keys are supported")
  	}
  	switch m := mapVal.(type) {
  	case map[string][]string:
  		if len(m) == 0 {
  			// to return nil with a proper type
  			var n []string
  			return n, nil
  		}
  		return m[key], nil
  	case map[string]string:
  		if len(m) == 0 {
  			return "", nil
  		}
  		return m[key], nil
  	default:
  		return nil, trace.BadParameter("type %T is not supported", m)
  	}
  }
docs: // GetStringMapValue is a helper function that returns property
  // from map[string]string or map[string][]string
  // the function returns empty value in case if key not found
  // In case if map is nil, returns empty value as well