Security group vs network ACL?

Security groups attach to instances/ENIs, are stateful and support allow rules only. NACLs attach to subnets, are stateless (return traffic needs its own rule) and support allow and deny rules evaluated in order.