While they don’t really assign them as much as they coordinate their assignment, ICANN is responsible for giving out IP address blocks, not individual addresses. The blocks are assigned in three different types, Class A (rarely, in fact I think they are all, or almost all, spoken for), Class B, and Class C.
The following are approximate sizes of each block types:
Class A - 16 million addresses
Class B - 65 thousand addresses
Class C - 254 addresses
Except for extremely large corporations (think ATT), most companies either get Class B or Class C blocks. Sometimes these blocks will be broken down further with subnet masks, but you get the general idea.
To answer your second question, the attached storage will not have a pre-assigned IP address, so it will be assigned by the IT personnel in the company. There’s also the possibility of DHCP, in which case the network software assigns the IP address, but that’s possibly getting more technical than you wanted me to.