How do I assign an individual table in a role.

With regard to role authorizations ECC6: Is it possible to assign an individual table to a role without using a table group. If so what is the Authorization Object that is needed? I have tried it with S_TABU_DIS, but that does not seem to work.

I have noticed that the standard SAP table groups have hundreds of tables in them. we are trying to only give the necessary table access and the standard groups are not acceptable according to our auditors.

Is it then necessary to create custom groups of tables? There is no way to assign the 1 table directly within a role/profile?

You have to assign a new authorization group (table group) to this specific table. This can be changed in the table TDDAT with SM30. You can choose any "four character" combination. You will have to transport this change to the production system.
Next of course, is to create an authorization on auth. object S_TABU_DIS with this new table group.
Be aware that you should not assign (or authorize for) the table group &NC&, as this is used for protecting tables without an authorization group. That's a huge number of tables.

The use of a custom transactioncode (probably in this case a parameter transaction of SM30) is always an option. But it depends on how your authorization concept looks like, and who (enduser, support, systemadmin) needs to change the contents of the table.

The question was about authorizing an individual table. As you know, access to tables is granted by S_TABU_DIS, the field DICBERCLS gives the possibility to narrow it down to one authorization group. To be able to authorize on one table, this authorization group should only be assigned to this specific table.

When there is no authorization group assigned, or when the authorization group is assigned to more than one table, the table needs a new specific authorization group.
This can be done by adding (or changing) one line in the table TDDAT (you can use the maintenance view V_DDAT_54) stating the table name and the new authorization group.

This prevents that the access is granted on object level for a lot of tables.