def parseCredentialsReport()

in hq/app/aws/iam/CredentialsReport.scala [83:124]


  def parseCredentialsReport(contents: String): List[IAMCredential] = {
      val iamCredentialsReport = CSVReader.open(new StringReader(contents)).allWithHeaders().map { row =>
        IAMCredential(
          user = row.getOrElse("user", "no username available"),
          arn = row.getOrElse("arn", "no ARN available"),
          creationTime = row.get("user_creation_time").flatMap(parseDateTimeOpt).get,
          stack = None,
          passwordEnabled = row.get("password_enabled").flatMap(parseBoolean),
          passwordLastUsed = row.get("password_last_used").flatMap(parseDateTimeOpt),
          passwordLastChanged = row.get("password_last_changed").flatMap(parseDateTimeOpt),
          passwordNextRotation = row.get("password_next_rotation").flatMap(parseDateTimeOpt),
          mfaActive = row.get("mfa_active").flatMap(parseBoolean).get,
          accessKey1Active = row.get("access_key_1_active").flatMap(parseBoolean).get,
          accessKey1LastRotated = row.get("access_key_1_last_rotated").flatMap(parseDateTimeOpt),
          accessKey1LastUsedDate = row.get("access_key_1_last_used_date").flatMap(parseDateTimeOpt),
          accessKey1LastUsedRegion = row.get("access_key_1_last_used_region").flatMap(parseRegionOpt),
          accessKey1LastUsedService = row.get("access_key_1_last_used_service").flatMap(parseStrOpt),
          accessKey2Active = row.get("access_key_2_active").flatMap(parseBoolean).get,
          accessKey2LastRotated = row.get("access_key_2_last_rotated").flatMap(parseDateTimeOpt),
          accessKey2LastUsedDate = row.get("access_key_2_last_used_date").flatMap(parseDateTimeOpt),
          accessKey2LastUsedRegion = row.get("access_key_2_last_used_region").flatMap(parseRegionOpt),
          accessKey2LastUsedService = row.get("access_key_2_last_used_service").flatMap(parseStrOpt),
          cert1Active = row.get("cert_1_active").flatMap(parseBoolean).get,
          cert1LastRotated = row.get("cert_1_last_rotated").flatMap(parseDateTimeOpt),
          cert2Active = row.get("cert_2_active").flatMap(parseBoolean).get,
          cert2LastRotated = row.get("cert_2_last_rotated").flatMap(parseDateTimeOpt)
        )
      }

    iamCredentialsReport.filter(x => x.passwordEnabled.contains(true)).foreach(iamCred => {
      val mandatoryMarkers = Map(
        "User" -> iamCred.user,
        "PasswordEnabled" -> iamCred.passwordEnabled.getOrElse(false),
        "Arn" -> iamCred.arn
      )

      val markers = MarkerContext(appendEntries(mandatoryMarkers.asJava))
      logger.info(s"${iamCred.user} user has non-Janus access to AWS: $iamCred")(markers)
    })

    iamCredentialsReport
  }