SECURITY

    Cards (24)

    • Database security
      Protection of sensitive information, maintaining availability
    • If database information is compromised, it can have severe consequences including financial loss, reputational damage, and legal issues
    • It is not enough to just capture data in a database, it is also important to store it in a way that is conducive to security
    • Database security overview

      • Availability
      • Authenticity
      • Integrity
      • Confidentiality
    • Availability
      Data needs to be available at all necessary times to appropriate users, ability to track access
    • Authenticity
      Ensure data has been edited by authorized source, confirm users accessing the system, verify report requests and outbound data
    • Integrity
      Verify external data formatting and metadata, ensure input data accuracy and compliance with workflow rules, report on all data changes and authors
    • Confidentiality
      Ensure confidential data is only available to correct people, secure database from external and internal breaches, provide reporting on data access
    • Security models

      • Considerations: who can access the database (DB administrators vs individuals), what data they can access (varies across applications, departments, individuals)
      • Need authentication (confirming identity) and authorisation (being allowed access)
    • Authentication
      The process of confirming a user attempting to log in is authorized to do so
    • Authentication examples

      • "We know you are Bob because you have entered Bob's password"
      • "We know you're REMOTE_PROCESS_X because you connect from IP address Z"
      • "We know you're a PUBLIC user because you haven't entered any password"
      • "We know you're MobileAPP Y because you have used the correct credentials"
    • Authorisation
      A user is accorded the rights to perform activities they have been authorized to do
    • Authorisation examples

      • Bob can save files here
      • Jane can read files here but not write them
      • Adam can SELECT from this table
      • Sarah can SELECT and INSERT on any table in this database
      • WEBAPP X can SELECT from this table and INSERT into that table
    • Security = Authentication + Authorisation
    • Maintaining data integrity involves creating users and granting them permissions to control access and limit their ability to read, change, add or delete data
    • Local host account

      Extra feature not present on the remote server
    • Creating a new user

      CREATE USER user_name @localhost IDENTIFIED BY 'password'
    • Granting privileges

      GRANT Privilege ON database.table_name TO user_name@localhost IDENTIFIED BY password
    • Checking privileges

      1. SHOW GRANTS
      2. SHOW GRANTS FOR 'user'@'localhost'
    • My PC localhost root user account has all privileges granted to all tables of all databases
    • The EEECS web hosting account user typically has the GRANT USAGE ON *.* privilege, which means they can't create new databases or view other users' databases
    • App security

      The app connects to the database as a user and performs queries as that user, so access control is provided by the app rather than executing specific SQL statements
    • App-level security is crucial as it allows only authorised users to access specific data, a feature not directly provided by a database's GRANT system
    • Specifying row-level access requires app-level enforcement, typically through queries with conditions