Make download available after purchase of a physical good
Sounds like a possible job for the Commerce File module


  This module is an extension of Drupal Commerce that provides the ability to sell file access.
  
  
  Ability to limit access to the file with limit settings
  Default limits: duration, download count, IP address count
  Limit default values can be inherited at the product level such that the product always uses the current default value
  After purchase of a file, limits are statically recorded to the line item so that they do not reflect any changes to the product's file limits.
  A user's limits reflect changes to an order, even after order is completed.
  


You can add a file field to your product entity type, and use the above module + rules to manage access to the file references by granting access licences. The licences are as liberal or as strict as you want to make them, so should be useful for your situation.

I've been using this module for a while and it works great